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

phlong999 · · 1650 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

指针

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中的元素个数进行复制。

 

 

 

 

 

 

 

 

 


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:phlong999

查看原文:GO语言学习-复杂类型(1)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1650 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传