Golang整理

2017-06-19  本文已影响44人  冰泡泡薄荷味
  1. iota iota是golang的一个关键字,此关键字用来声明enum的时候采用,默认从0开始,每遇到一个类似const就会重置为0。
  2. 通过开头字母大小写来实现变量和函数的公有私有。
  3. 将数组作为函数参数进行传递时,实际传入的是该数组的副本。
  4. 由于初始化数组时无法预知定义多大的空间,就需要使用类似动态数组的结构,go语言中采用slice来实现数组的切片,类似python中的切片,slice是一个引用类型,它总是指向一个底层的array,slice的声明类似array,只是不需要长度。当引用改变其中的元素时,其他所有的引用也会相应改变。常用内置函数: len获取长度,cap获取容量,append追加元素,并返回一个和slice一样类型的slice,copy函数从源slice的src中复制元素到目标dst,并且返回复制的元素个数。
  5. map类似python中的字典,格式为map[keyType]valueType
    • map无序,必须通过key去获取。
    • 长度不固定,是一种引用类型。
    • len函数
    • map不是安全的,在多个goroutine中使用时必须使用mutex lock
  6. make用于内建类型(mapslicechannel)的内存分配。new用于各种类型的内存分配。
  7. goswitch默认相当于每个case后面都加了break。但是可以通过加fallthrough强制执行后后面的代码。
  8. main函数和init函数,在定义时不能有任何参数和返回值。
  9. 导入包时加前缀_是为了引入该包,而不直接使用包里面的函数,只是调用包中的init函数。
  10. interface是一组method签名的集合,可以通过interface来定义对象的一组行为。若某个对象实现了某个接口的所有方法,那么这个对象就实现了此接口。如果定义一个interface的变量,那么这个变量里面可以存实现这个interface的任意类型的对象。空interface可以存储任何类型的数值。
  11. element.(type)只能在switch中使用,其他地方不能使用。
  12. golang中的反射机制,就是能够检查程序在运行时的状态。
上一篇下一篇

猜你喜欢

热点阅读