对于只学C或者Java,可能对range了解不是很多,range 用来遍历数据结构,比如数组,且其迭代变量从0开始。 defer语句:能让我们在函数返回前执行另一个函数,遇到return或者是函数末尾时执行defer的语句,可以用计算机里面的中断来理解,defer的语句是低级中断,而不被defer的语句是高级中断,低级中断要给高级中断让路,之后再执行自己的中断。 package main
import "fmt"
func main() { defer fmt.Println("I am the first defer statement") //1 defer fmt.Println("I am the second defer statement") //2 defer fmt.Println("I am the third defer statement") //3 fmt.Println("Hello World!") //4 } 对于这段代码,它的执行顺序是4 3 2 1,相当于defer后面语句优先级高于此时被defer的语句。
数组:数组的打印,当用println函数后面直接加数组名时,是打印数组全部对象。数组太普及了,所以基本语法略过 切片:声明 var 切片名 = make (【】类型名,长度), 其中对于append函数 添加格式如下: 切片名=append(切片名,附加值...)这里前后切片名一致 删除append :切片名=append(切片名【:删除的索引】,切片名【删除的索引+1:】...)便成功删除要删除的一个索引 切片赋值 copy 前一个参数传入要复制的,后一个参数传入被复制的切片。 可见go语言切片十分强大,相当于C语言的链表,但是又可以看成数组,有着数组简单便捷性,并且切片解决了数组插入、删除的不易,可谓是结合了两者的优点,所以对于go编程来说,我们应该多使用切片,少用数组。 哈希(映射):var 哈希名=make(map【哈希类型】int) 添加:哈希名【键】=值 删除:delete(哈希名,键) 结构:type 结构名 struct{} 变量声明用:var 变量名 结构名 结构打印时可以用%+v来把成员名打印出来 一般用简单变量名来构造结构 c :=movie(name:,old:10) movie为一个结构,此时已经构造一个实例,即new 这个变量,为其分配空间 结构可以有它的初始化器,类似与Java 方法与函数区别在于方法在func后面有一个括号为接收者,一般其与结构体联合使用,方法使用于结构与函数在结构体使用有很大不同,函数中有结构体的话就必须有该结构体的声明,这就在大程序十分不便,而方法只需要编写一次,就能对结构体任何实例进行调用,所以我们尽量对结构体使用方法。 在方法接收者中有*号表示指针传递,没有就是值传递。 方法集我不是看得很明白,感觉就是方法的集合,比如求球的表面积和体积的方法可以组成一个方法集。 对于接口,是方法集的蓝图,就是没有具体实现的方法集,只有格式,类似于Java的接口,但是go语言没有继承 对于字符串,可以看成字节切片,我们要熟练运用字符串库strings,并且要十分注意的是,字符串可以拼接,但创建之后不能修改!