go 语言结构体
作者:互联网
go语言结构体
目录Go 语言结构体
Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性:
- Title :标题
- Author : 作者
- Subject:学科
- ID:书籍ID
定义结构体
结构体定义需要使用 type 和 struct 语句。
struct 语句定义一个新的数据类型,结构体中有一个或多个成员。
type 语句设定了结构体的名称。结构体的格式如下:
type struct_variable_type struct {
member definition
member definition
...
member definition
}
一旦定义了结构体类型,它就能用于变量的声明,语法格式如下:
//赋值时,前后顺序不能颠倒
variable_name := structure_variable_type {value1, value2...valuen}
或
//k:v 结构,顺序可以改变
variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}
实例如下:
package main
import "fmt"
//结构体声明
type Person struct {
name string
sex string
age int
id_card int
}
func main() {
//按顺序进行初始化
fmt.Println(Person{"zhangsna", "男", 20, 12345})
//也可以使用 key : value 的格式
fmt.Println(Person{name: "lili", sex: "女", age: 20, id_card: 123123})
//忽略的字段为 该数值类型的默认值
fmt.Println(Person{name: "wangwu", age: 18})
}
//输出结果:
{zhangsna 男 20 12345}
{lili 女 20 123123}
{wangwu 18 0}
访问结构体成员
如果要访问结构体成员,需要使用点号 . 操作符,格式为:
结构体.成员名
结构体类型变量使用 struct 关键字定义,实例如下:
package main
import "fmt"
type Person struct {
name string
sex string
age int
id_card int
}
func main() {
//结构体类型变量
var (
person1 Person
person2 Person
)
//给person1进行赋值
person1.name = "tom"
person1.sex = "man"
person1.age = 30
person1.id_card = 123
//给person2进行赋值
person2.name = "jerry"
person2.sex = "man"
person2.age = 25
person2.id_card = 456
//打印person1信息
fmt.Println(person1)
fmt.Printf("persion1 name: %s\n", person1.name)
fmt.Printf("persion1 sex: %s\n", person1.sex)
fmt.Printf("persion1 age: %d\n", person1.age)
fmt.Printf("persion1 id_card: %d\n", person1.id_card)
fmt.Println("---------")
//打印person2信息
fmt.Println(person2)
fmt.Printf("persion2 name: %s\n", person1.name)
fmt.Printf("persion2 sex: %s\n", person1.sex)
fmt.Printf("persion2 age: %d\n", person1.age)
fmt.Printf("persion2 id_card: %d\n", person1.id_card)
}
//输出结果:
{tom man 30 123}
persion1 name: tom
persion1 sex: man
persion1 age: 30
persion1 id_card: 123
---------
{jerry man 25 456}
persion2 name: tom
persion2 sex: man
persion2 age: 30
persion2 id_card: 123
结构体作为函数参数
你可以像其他数据类型一样将结构体类型作为参数传递给函数。并以以上实例的方式访问结构体变量:
package main
import "fmt"
type Person struct {
name string
sex string
age int
id_card int
}
func main() {
//结构体类型变量
var (
person1 Person
person2 Person
)
//给person1进行赋值
person1.name = "tom"
person1.sex = "man"
person1.age = 30
person1.id_card = 123
//给person2进行赋值
person2.name = "jerry"
person2.sex = "man"
person2.age = 25
person2.id_card = 456
//使用函数传参结构体类型数据
printInfo(person1)
fmt.Println("---------")
printInfo(person2)
}
//函数定义结构体 为形式参数,进行传入
func printInfo(per Person) {
fmt.Println("姓名:", per.name)
fmt.Println("性别:", per.sex)
fmt.Println("年龄:", per.age)
fmt.Println("id:", per.id_card)
}
//输出结果:
姓名: tom
性别: man
年龄: 30
id: 123
---------
姓名: jerry
性别: man
年龄: 25
id: 456
结构体指针
你可以定义指向结构体的指针类似于其他指针变量,格式如下:
var struct_pointer *Person
以上定义的指针变量可以存储结构体变量的地址。查看结构体变量地址,可以将 & 符号放置于结构体变量前:
struct_pointer = &person1
使用结构体指针访问结构体成员,使用 点"." 操作符:
struct_pointer.title
接下来让我们使用结构体指针重写以上实例,代码如下:
package main
import "fmt"
type Person struct {
name string
sex string
age int
id_card int
}
func main() {
//结构体类型变量
var (
person1 Person
person2 Person
)
//给person1进行赋值
person1.name = "tom"
person1.sex = "man"
person1.age = 30
person1.id_card = 123
//给person2进行赋值
person2.name = "jerry"
person2.sex = "man"
person2.age = 25
person2.id_card = 456
//使用函数传参结构体类型数据
printInfo(&person1)
fmt.Println("---------")
printInfo(&person2)
}
//函数定义结构体 为形式参数,进行传入
func printInfo(per *Person) {
fmt.Println("姓名:", per.name)
fmt.Println("性别:", per.sex)
fmt.Println("年龄:", per.age)
fmt.Println("id:", per.id_card)
}
//输出结果:
姓名: tom
性别: man
年龄: 30
id: 123
---------
姓名: jerry
性别: man
年龄: 25
id: 456
标签:语言,fmt,name,person2,age,person1,go,id,结构 来源: https://www.cnblogs.com/zhijiyiyu/p/16072543.html