“你,何以始终不说话 尽管讲出不快吧 事与冀盼有落差 请不必惊怕” ————Eason《无条件》
第一课 Go语言基础入门
一.简介
1.1 什么是Go语言
1.高性能、高并发
2.语法简单、学习曲线平缓
3.丰富的标准库
4.完善的工具链
5.静态链接
6.快速编译
7.跨平台
8.垃圾回收
1.2 哪些公司再用
总结:很多
1.3 字节跳动为什么全面拥抱 Go 语言
1.最初使用的 Python,由于性能问题换成了 Go
2.C++ 不太适合在线 Web 业务
3.早期团队非 Java 背景
4.性能比较好
5.部署简单、学习成本低
6.内部 RPC 和 HTTP 框架的推广
二.入门
2.1 开发环境
官网下载go.dev 无脑下一步就好 配置开发环境,GOPATH&GOROOT,这个网上搜教程就好,我估计在不久的将来则不用咱们配置环境变量了。
编译器,集成开发环境我建议直接用Goland一步到位,小白学习语法的话我推荐更偏向使用sublime,进阶用vscode。
2.2 基础语法
1.helloworld
2.变量声明“var 变量”,或者“变量:=”
3.if else
4.循环只有for
5.switch分支
6.数组
7.切片
8.map,m :=make(map[string]int)
9.range(常用在for里进行遍历)
10.函数(变量类型写在后面)
11.指针,操作有限,对传入的函数进行修改。
12.结构体
13.结构体方法,类似于类成员函数
14.错误处理
15.字符串操作,字符串工具函数,自己看操作手册吧
16.字符串格式化
17.json处理,数列化字符串,json.MarSa...
18.时间处理,time.Parse,new.Unix()获取时间戳。
19.数字解析
20.进程信息
总结:这部分东西太多了,记忆肯定记不住,必须得翻阅文档,没有操作手册寸步难行。多写写代码就好了。
三.实战
这是我练笔先写的代码:
1.猜字谜游戏
用时间戳初始化随机数种子
*代码过程中遇到了Seed被弃用的情况,我没搞明白这俩货色的区别,下面回答是chatgpt告诉我的: 在之前提供的代码中,使用了rand.New(rand.NewSource(time.Now().UnixNano()))来创建一个新的伪随机数生成器,并通过当前时间的纳秒级别作为种子来初始化生成器。这是为了确保每次程序运行时,生成的随机数序列都是不同的。然而,在修改的代码中,将其替换为rand.Seed(time.Now().UnixNano())。这是因为rand.Seed()函数的作用是设置随机数生成器的种子值。通过将time.Now().UnixNano()作为种子,每次程序运行时都会得到一个不同的种子值,从而产生不同的随机数序列。通过将种子值设置为当前时间的纳秒级别,可以产生足够的随机性,使得随机数序列在不同的程序运行中具有很高的差异性。这样可以避免在相同种子下生成相同的随机数序列,从而增加程序的随机性和变化性。 使用rand.Seed(time.Now().UnixNano())是一种常见的设置随机数种子的做法,以获得更好的随机数生成效果。
*代码在用课程视频里源码的时候遇到了无论怎么都输出“输入无效”的结果。感觉是输入字符串被处理为空。将input = strings.TrimSuffix(input, "\n")换成input = strings.TrimSpace(input)就解决问题了。但是还是很蒙,为什么TrimSuffix修改括号内容后还是不行。这是gpt告诉我的:
TrimSuffix和TrimSpace是Go语言字符串处理中的两个函数,它们有不同的功能和用途。
TrimSuffix
TrimSuffix函数用于删除字符串末尾指定的后缀。
它接受两个参数:输入字符串和要删除的后缀字符串。
如果输入字符串以指定的后缀结尾,则返回删除后缀的新字符串;否则,返回原始字符串。
使用TrimSuffix可以方便地删除给定字符串的特定后缀。
示例:
input := "Hello, World!" suffix := "World!" result := strings.TrimSuffix(input, suffix) fmt.Println(result) // Output: Hello, TrimSpace
TrimSpace函数用于删除字符串的首尾空白字符。
它会删除字符串开头和结尾的空格、制表符、换行符等空白字符。
返回删除空白字符后的新字符串。
使用TrimSpace可以方便地去除用户输入字符串中不必要的空格和空白字符。
示例:
input := " Hello, World! " result := strings.TrimSpace(input) fmt.Println(result) // Output: Hello, World!
总结:TrimSuffix用于删除字符串末尾的指定后缀,而TrimSpace用于删除字符串的首尾空白字符。
它们是两个不同的函数,用于不同的字符串处理场景。
TrimSuffix和TrimSpace函数都返回处理后的新字符串,原始字符串不会被修改。
2.在线词典
没搞明白,但大概理解为如何获取json文件。需要有一些网编基础。我先去看看别的教程再说吧,随缘再写个新笔记。
3.SOCKS5代理
https三次握手
socks5代理服务器基于tcp/ip协议