上一篇学了结构的定义及初始化。接下来进一步学习结构体。
结构体成员访问
type Person struct {
name string
age int
}
如上代码定义了一个名为 Person 的结构体。该结构体中有两个成员,分别为 name,age。如果我需要访问结构体的成员可以使用 type.field 的方式来进行访问。其中 type 是结构体实例化后的变量,field 是要访问的结构体成员名称。
func main() {
p := Person{"Jack", 30}
fmt.Println("hi, " + p.name)
}
如上代码单独访问了结构体重 name 成员,程序运行结果如下:
结构体成员赋值
结构体实例化之后,并不总是一成不变的。有时根据业务逻辑会动态的修改结构体中成员的值。
func main() {
p := Person{"Jack", 30}
p.age = 31
fmt.Println(p.name + " age:" + strconv.Itoa(p.age))
}
如上代码首先实例化一个 Person 结构体,此时 p 的 age 成员的值为 30,之后我们为 age 成员重新赋值。这里需要注意的是,为成员赋值需要使用“=”而不是“:=”。其实很好理解“:=”的意思是声明变量并赋值,“=”的意思是为已知变量赋值。如上代码,无论是 p 还是 p 的成员 age 都是已经存在的。
strconv 包主要实现对字符串和基本数据类型之间的转换。基本数据类型包括:布尔、整型(包括有/无符号、二进制、八进制、十进制和十六进制)和浮点型等。
strconv.Itoa(p.age) 是将一个 int 类型转换为字符串类型。因为 Go 的字符串“+”操作符只能作用于两个相同类型。所以引入 strconv 包将 int 类型转换为字符串类型。