快速变量声明
强类型 s:="sdd"
常量连续声明
func main() {
const (
A = iota
B
C
)
fmt.Print(A,B,C)
}
C和指针
7.2.2 函数的缺省认定: 当程序调用一个无法见到原型的函数时, 编译器便认为该函数返回一个整数值, 然后根据被赋值的变量的类型, 对整数值进行转换
8.1.5 声明数组, 编译器根据声明为数组保留内存空间, 创建数组名的常量, 指向起始地址
声明指针, 编译器只为指针本身保留内存空间, 指针名是变量, 可以改变
遍历
var ls = []int{1, 2, 3}
var s = "hello"
for _, v := range s {
fmt.Printf("%c", v)
}
for _, v := range ls {
fmt.Printf("%d", v)
}
for i := range ls {
ls[i]=i
}
切片
var ls []int //声明, 不分配内存
var ls2 = []int{} //分配内存
println(nil == ls)
println(ls2 == nil)
元素的添加
使用append添加元素
len不等于cap。
如果append使len超过cap,则重新分配内存,容量的扩展规律按容量的 2 倍数扩充
var ls [] string
ls = append(ls, "dd")
elems := []string{"sdd", "sddd"}
ls = append(ls, elems...)
fmt.Println(ls)
结构体
结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正地分配内存
结构体实例化后字段的默认值是字段类型的默认值,例如:数值为 0,字符串为空字符串,布尔为 false,指针为 nil 等。