作者:看那个码农
公众号:看那个码农
上期内容介绍了Go语言学习之运算符|Go主题月
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 其他运算符
本篇内容将继续带领大家走进Go语言的世界。
1.结构体是什么
Go语言通过用自定义的方式
形成新的类型,结构体是类型中带有成员
的复合类型。
结构体可以让开发者通过单个变量
引用一系列相关的值。
通过使用结构体,可以在单个变量中存储众多类型不同的数据字段。
结构体为数据提供了一种灵活
的数据结果创建方式。
2.结构体的定义格式
Go语言的关键词type
可以将各种基本类型定义为自定义类型,基本类型包括整型
、字符串
、布尔
等。
结构体定义格式如下:
Type 类型名 struct{
字段1 字段1 类型
字段2 字段2 类型
…
}
- 类型名:标识自定义结构体的名称,同一个包内不能重复。
- Struct{}:表示结构体类型,type类型名 struct{}可以理解为将struct{}结构体定义为类型名的类型。
- 字段1、字段2……:表示结构体字段名。结构体的字段名必须唯一
- 字段1类型、字段2类型……:表示结构体字段的类型。
1.创建结构体实例方法一
例如下面案例所示:
package main
import "fmt"
type num struct {
node1 int
node2 int
}
func main() {
m:=num{
node1: 5,
node2: 10,
}
fmt.Printf("node1的值为:%v\nnode2的值为:%v",m.node1,m.node2)
}
输出为:
2.创建结构体实例方法二
除了上面案例的赋值方法外,还有一种利用结构体赋值的方法:
package main
import "fmt"
type num struct {
node1 int
node2 int
}
func main() {
var m num
m.node1=1
m.node2=2
fmt.Printf("node1的值为:%v\nnode2的值为:%v",m.node1,m.node2)
}
输出为:
3.创建结构体实例方法三
Go语言中也可以使用关键字new
来创建结构体实例,
如下面的案例所示:
package main
import "fmt"
type num struct {
node1 int
node2 int
}
func main() {
m:=new(num)
m.node1=1
m.node2=2
fmt.Printf("node1的值为:%v\nnode2的值为:%v",m.node1,m.node2)
}
输出为:
3.嵌套结构体
有时候根据业务的需求,需要建立较为复杂的数据结构,在一个结构体中嵌套另一个结构体的方式就很常用。
例如:需要统计公司里每位同事的基本信息(如姓名,年龄,地址),而地址本身也是一个数据结构,地址里面常常会包含城市,街区名,门牌号等信息。
例如下面这个案例:
package main
import "fmt"
type People struct {
Name string
Age int
Address Address
}
type Address struct {
City string
Street string
Number int
}
func main() {
m:=People{
Name: "Lisan",
Age: 22,
Address: Address{
City: "Beijing",
Street: "Central Street",
Number: 1006,
},
}
fmt.Printf("%+v\n",m)
}
输出为:
4.比较结构体
对结构体进行比较,要先看它们的类型和值是否相同。
对于类型相同的结构体,可以使用相等运算符来比较。
- 要判断两个结构体是否相等,可使用“==”
- 要判断两个结构体是否不等,可使用“!=”
具体代码如下面的案例所示:
package main
import "fmt"
type num struct {
node1 int
node2 int
}
func main() {
a:=num{
node1: 1,
node2: 2,
}
b:=num{
node1: 1,
node2: 2,
}
if a==b{
fmt.Println("a == b\n")
}else{
fmt.Println("a != b\n")
}
}
输出为:
5.匿名结构体
匿名结构体的初始化写法由结构体定义
和键值对初始化
两个部分组成。
无需通过type关键词定义就可以直接使用。
- 匿名结构体定义时没有结构体类型名,只有
字段
和类型定义
。 - 键值对初始化部分由可选的
多个键值对
组成。
例如下面的格式为创建一个匿名结构体实例的过程:
ins:=struct{
//匿名结构体字段定义
字段1 字段类型1
字段2 字段类型2
…
}{
//字段值初始化
初始化字段1:字段1 的值
初始化字段2:字段2 的值
…
}
在匿名结构体中,键值对初始化部分
是可选的
,不初始化成员,匿名结构体的格式为:
ins:=struct{
//匿名结构体字段定义
字段1 字段类型1
字段2 字段类型2
…
}{}
如果你觉得这篇内容对你有帮助的话:
1、点赞支持下吧,让更多的人也能看到这篇内容
2、关注公众号:看那个码农,我们一起学习一起进步。