Go 语言学习开篇

最近一年走不出舒适区,个人水平有限,在技术领域也无法得到提高,整日无所事事,沉迷玩乐,感觉职业生涯走到尽头了。

也跟风学习过 Depp Learning、Data Science 等,没有数学基础,智商又不够,两三个月就放弃了,还尝试学了 iOS,仍是没坚持下来,现在轮到 Go 了,不知道能坚持多久。

先是学习了 Go 的语法,觉得其中很有意思的部分,做个记录,好督促自己这次能坚持的更久些。

类型声明与类 c 的语言不同,类型后置

1
2
3
4
5
6
7
// 变量
var i int = 1
// 函数
func add(x, y int) int {
return x + y
}

不需要 while 关键字的 while 循环

1
2
3
4
5
6
7
8
9
sum := 1
for i < 100 {
sum += i;
}
// while(true)
for {
}

switch 语句默认 break 除非使用 fallthrough

1
2
3
4
5
6
7
8
switch os := runtime.GOOS; os {
case "darwin":
fmt.Println("OS X.")
case "linux":
fmt.Println("Linux.")
default:
fmt.Printf("%s.", os)
}

没有条件的 switch 可以替换 if-then-else

1
2
3
4
5
6
7
8
9
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("Good morning!")
case t.Hour() < 17:
fmt.Println("Good afternoon.")
default:
fmt.Println("Good evening.")
}

接口的实现不需要显示声明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
type Duck interface {
quack()
}
type BlackDuck struct {
Name string
}
func (d BlackDuck) quack() {
fmt.Printf("I am %v, is %T", d.Name, d)
}
func main() {
var d Duck
bd := BlackDuck{"Snow"}
// bd 实现了 Duck 接口定义的 quack 所以可以赋值给 d
d = bd
d.quack()
}

还有其它也非常有意思的特点,没有一一列举,入门学习主要参考官方 GO 指南