GO基础语法
-
方法或函数调用时,传入参数一般都是值复制,除非是map、slice、channel、指针类型是引用传递
-
短的变量声明(Short Variable Declarations),即自动推导,只能在函数内部使用
-
字符串与
[]byte
之间的转换是复制(有内存消耗),使用range来避免内存分配来提高性能 -
使用
for range
迭代map
时每次迭代的顺序可能不一样,map
的迭代事随机的 -
switch case
匹配case
条件后默认退出,除非使用fallthrough
继续匹配 -
没有前置自增、前置自减
-
位运算优先级高于四则运算
-
log包中的
log.Fatal
和log.Panic
不仅仅记录在日志,还会终止程序 -
nil
只能赋值给指针、channel、func、interface、map或slice类型的变量 -
make
和new
的区别-
make
只能用于slice、map、channel的初始化,它返回的类型就是这三个类型的本身,而不是他们的指针类型,因为这三种类型就是引用类型。分配空间并初始化。// The make built-in function allocates and initializes an object of type // slice, map, or chan (only). Like new, the first argument is a type, not a // value. Unlike new, make's return type is the same as the type of its // argument, not a pointer to it. The specification of the result depends on // the type: // Slice: The size specifies the length. The capacity of the slice is // equal to its length. A second integer argument may be provided to // specify a different capacity; it must be no smaller than the // length. For example, make([]int, 0, 10) allocates an underlying array // of size 10 and returns a slice of length 0 and capacity 10 that is // backed by this underlying array. // Map: An empty map is allocated with enough space to hold the // specified number of elements. The size may be omitted, in which case // a small starting size is allocated. // Channel: The channel's buffer is initialized with the specified // buffer capacity. If zero, or the size is omitted, the channel is // unbuffered. func make(t Type, size ...IntegerType) Type
-
new
只接受一个参数,这个参数是一个类型,返回一个指向该类型内存地址的指针,同时把分配的内存置为零。new
不仅能够为系统默认的数据类型分配空间,也能为自定义类型分配空间// The new built-in function allocates memory. The first argument is a type, // not a value, and the value returned is a pointer to a newly // allocated zero value of that type. func new(Type) *Type
-
-
常量无法寻址,不能进行取指针操作操作