这是我参与「第五届青训营 」伴学笔记创作活动的第1天,主要学习了go语言的基础语法,以及实现了三个小Demo
- 猜数游戏
- 在线词典
- SOCKS5代理
golang基础
1.基础变量声明
常见主要有3种方法
var a = 1a := 1var a int = 1
2.if/for等
它们的条件都可以不用被括号包围,如果写成被包围的格式,编译的时候也会被自动去掉
if a == 1{ ... }
3.数组
var a [8]intb := [5]int{1, 2, 3, 4, 5}
4.切片
变长数组slice,make类似malloc,append如果长度不够会发生扩容然后再返回,所以需要赋值
a = make([]string, 3)a = append(a, "wo")
其余的map,以及错误处理和其他语言大差不差,后面主要介绍了一些api,比如json,strconv,env等等
猜数游戏
生成一个随机数,让用户猜数,告知是猜大了还是猜小了,用rand.Intn的时候,如果不设置随机数种子,则会生成一样的数,建议用时间戳来设置 官方文档如下;
- Seeding with the same value results in the same random sequence each run.
- For different numbers, seed with a different value, such as
- time.Now().UnixNano(), which yields a constantly-changing number 实现中需要注意的代码如下
func main() {
rand.Seed(time.Now().UnixNano())
var secretNum int = rand.Intn(maxNum)
reader := bufio.NewReader(os.Stdin)
userInput, err := reader.ReadString('\n')
numString := strings.TrimSuffix(userInput, "\r\n")
}
在线词典
这个程序实现的就是当用户输入一个单词的时候,会返回该单词的音标以及对应的释义,主要通过一些第三方的api来实现,可以学到HTTP请求的发送和接收响应,以及golang中JSON的序列化
SOCKS5
通过net标准库,socks5协议来实现点对点的传输,主要可以用于认证传输获取数据,这种代理协议很多vpn都有涉及
总结
总体来说,这个入门视频挺不错的,能比较快地上手golang,学习了基础语法、HTTP请求响应以及一些网络传输的项目 个人感觉golang优点类似c加了垃圾回收一样,然后有go routine的协助,也能比较简单地写出高效率的代码