七叶笔记 » golang编程 » Go语言编程从入门到精通,结构体和指针

Go语言编程从入门到精通,结构体和指针

Go (或Golang )是Google 在2007 年开发的一种开源编程语言,出自Robert Griesemer 、Rob Pike 和Ken Thompson 之手。2009 年11 月10 日, Google Open Source Blog 向全球发布了这款语言:公告指出Go 的主要目标是“兼具Python 等动态语句的开发速度和C 或C ++等编译型语言的性能与安全性”。

1. 结构体

结构体是具有指定数据类型的数据字段,可以使用变量引用对应的值。在结构体中,变量中存储不同类型的数据字段。结构体中的值访问更加方便,数据结构灵活,创建方式简单。利用结构体,让模块化成都更高,方便地创建并使用结构数据。

先举个例子

5行:创建一个名字为student的结构体,起始用大括号。

6行:结构体内数据字段名为name,类型为string。

7行:结构体内数据字段名为age,类型为int。

11行:初始化一个变量s,类型为结构体类型。

12行、13行:给数据字段赋值,赋的值应确保正确的数据类型。

15行:查看定义的变量s。

16行、17行:访问结构体的数据字段,采用点(.)获取指定字段

嵌套结构体

当数据结构存在复杂的多个层级关系,为了适应这种情况,需要在一个结构体中嵌套另外一个结构体,比如有一个学生student的结构体,有名字(name)、年龄(age)、地址(address)三个字段,在地址(address)字段中,有地址所在的城市(city)、街道(street)、门牌号(number),当然你也可以想象更复杂的环境。

首先举个例子

3行:定义一个student的结构体

6行:定义字段address,类型为8行的Address结构体类型,这样就可以通过访问address字段访问到Address结构体内的字段。

14行:声明一个变量,类型为student结构体。

15行、16行:给student结构体的name字段、age字段赋值。

17行、18行、19行:给student结构体的address字段赋值,赋的值通过结构体Address进行赋值。
28行:通过fmt.Printf拼接输出字符串

自定义结构体数据字段的默认值

布尔型boolen false

整形integer 0

浮点型float 0.0

字符串string “”

指针pointer nil

函数function nil

接口interface nil

切片slice nil

通道channel nil

映射map nil

结构体的比较

在结构体比较的时候,(1)检查类型是否相同;(2)检查结构体的值是否相同。

2. 结构体中的指针引用和值引用

值引用复制结构体

12行:定义s2变量,赋值s1

13行:s1变量的age字段修改值为19

14行、15行:分别输出s1和s2,可以看到s2的age值是原来的18,并没有随着s1的age的值进行变化。

指针引用复制结构体

12行:通过指针引用的方式复制结构体

13行:对s1的age字段修改值

14行、15行:可以看到值是一样的,结构体的指针也是一样的

相关文章