Go第一课:语法和实战 | 青训营笔记

108 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天。 主要学习了掘金go语言课程的第1,2节课,耗时1.5h。第一节课主要讲述go语言的优势,常见的语言,第二节课则是动手实现了一些go语言项目。

课程一

1.1 Go语言的优势:

  • 高性能、高并发
  • 快速编译
  • 跨平台
  • 有垃圾回收机制

1.2 Go基础语法:

1.2.1 框架结构:

image.png

1.2.2 编译方式:

image.png

1.2.3 变量:

两种申明变量的方式:

  • var ,自动推导类型
  • :=,使用变量:=赋予值 const申明常量

1.2.4 if-else,for循环,switch:

与其他语言不同是不需要在语法后面加上(),直接写就行。

1.2.5 数组,切片和map:

数组:因为受到长度限制,一般选用切片

var a [5]int
a[4] = 100
fmt.Println("get:", a[2])
fmt.Println("len:", len(a))

b := [5]int{1, 2, 3, 4, 5}
fmt.Println(b)

var twoD [2][3]int
for i := 0; i < 2; i++ {
	for j := 0; j < 3; j++ {
		twoD[i][j] = i + j
	}
}
fmt.Println("2d: ", twoD)

切片:可以任意更改长度。比如用make来创建一个切片

c := make([]string, len(s))
copy(c, s)
fmt.Println(c) // [a b c d e f]

fmt.Println(s[2:5]) // [c d e]
fmt.Println(s[:5])  // [a b c d e]
fmt.Println(s[2:])  // [c d e f]

map:golang的哈希map完全无序

1.2.6 进程信息:

在go里面,我们可以用os.argv得到程序执行时指定的命令行参数。

课程二

猜数字游戏

这个题目基本就是熟悉语法了,需要注意的是需要加入随机种子,否则取的随机数是固定的。

在线字典

这个题目就是一个普通的爬虫,然后处理json数据,有两个网站很不错

Socks5

暂时没弄懂,有tcp网络请求这些。

总结

学习新语言,课程进度不错,语法啥的一节课带过了,后面自己手敲都能学会。第三个题目网络请求感觉和后面的RPC项目有关,明天弄懂这个题。