简单说,又好久没有更新了,貌似”死”了一般,2019眼瞅就要过去了,不出意外的发现自己貌似什么都没干。
言归正传,最近再次放假,利用一些时间把Go语言学习一下,这个flag已经立了一年了,才开始初见行动,惭愧。
学习方法
极客时间 Go语言教程 和 Go官方tour教程
个人感觉快速学习基础只是还是官方教程更有效一些,如同当年学习Python一样,官方教程还是直接一些。
我的发现
列出几个个人认为的Go语言特点,也是总结,帮助自己和他人更好的理解Go语言
类型位置后移,例如变量,方法返回值类型,与常见语言相比,类型的位置都后移了
1
var i int
切片(slice)需要认真理解,它是一个特殊的结构,底层直接操控不可变的数组。目前来看,大多情况应该使用slice而非array
切片的快速生命和python的数组截取很想,但是本质完全不一样,python是生成了新的数组对象空间,可以说是新的副本,修改不会印象原始数据
Go的切片不是,他是一个array的抽象引用结构,对切片的操作直接会影响原始数据Go有指针,但不能像C++那样做指针操作,他只能用于传递调用
Go没有类,只有结构体。我们可以给结构体类型或自定义类型添加方法,其便利性在于,Go语言会自动做指针和对象的转换,比起普通方法更加灵活。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31package main
import "fmt"
type Vertex struct {
X, Y float64
}
// 类方法
func (v *Vertex) Scale(f float64) {
v.X = v.X * f
v.Y = v.Y * f
}
// 普通方法
func ScaleFunc(v *Vertex, f float64) {
v.X = v.X * f
v.Y = v.Y * f
}
func main() {
v := Vertex{3, 4}
v.Scale(2)
ScaleFunc(&v, 10)
p := &Vertex{4, 3}
p.Scale(3)
ScaleFunc(p, 8)
fmt.Println(v, p)
}
结束语
这个文章烂尾了,其实是没有开始就结束了。😛