您的位置:首页 > 编程语言 > Go语言

GO语言学习-复杂类型(1)

2014-12-11 16:27 274 查看
指针

GO的指针用法与C语言中指针用法类似,&用于取址, *用于取值。唯一区别:没有指针运算



结构体

例:

type struct_example struct {

a int

b int

}

结构体字段的访问与C语言相同,用点号来访问。

当用结构体指针来访问字段时,也使用点号来访问。

数组

定义方法: var a[666] int

使用方法与C类似,但GO中数组名是一个值,而C中数组名是一个指针。另外GO中数组长度不能改变。

如果长度写成 [...],GO编译器会根据定义的元素来推导长度

例: a := [...]int{1,2,3,4,5}

数组切片 slice

slice就像是一种动态数组,可以改变长度。

slice是对底层数组的抽象和控制,包含三种元数据。

1.指向数组的指针

2.slice的长度

3.slice的容量,即最大长度

定义方法例 a := [ ]int{1,2,3,4,5,6}

给定一个array或者其他slice,一个新的slice通过a[I:J]的方式创建。

这会创建一个新的slice,指向变量a,从序号I开始,结束在序号J之前,长度为J-I

例:

q := a[1:3] //即 q 为 { 2,3 }的slice

可以使用make函数来构造slice

例;

a := make([]int,2,5) //定义成功的slice的长度为2,容量为5.

slice的零值是nil

可以使用append函数向slice添加元素,使slice变长。slice会自动调整容量,即调整数组长度,如果追加的内容长度超过当前的容量时,slice会自动在分配一块足够大的内存。

可以使用range格式对slice进行迭代循环。(使用range时可以通过赋值给 _ 来忽略序号或值)

可以使用copy函数对两个slice进行复制。如果这两个slice长度不同时,会按照长度小slice中的元素个数进行复制。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: