定义
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合
结构体的定义
- 结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下:
type struct_variable_type struct {
member definition
member definition
...
member definition
}
- 结构体声明格式:
variable_name := structure_variable_type {value1, value2...valuen}
或
variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}
package main
import "fmt"
type Student struct {
name string
age int
score int
}
func main() {
fmt.Println(Student{"Lucy", 18, 90})
//可以使用key => value格式
fmt.Println(Student{name: "Jim", age: 18, score:80})
//忽略的字段为0或空
fmt.Println(Student{name: "David", age: 19})
}
访问结构体成员
如果要访问结构体成员,需要使用点号 . 操作符,格式为
结构体.成员名
package main
import "fmt"
type Student struct {
name string
age int
score int
}
func main() {
var stu1 Student
var stu2 Student
/* stu1 描述*/
stu1.name = "Jim"
stu1.age = 18
stu1.score = 90
/* 打印stu1 信息*/
fmt.Printf("stu1 name: %s\n", stu1.name)
fmt.Printf("stu1 age: %d\n", stu1.age)
fmt.Printf("stu1 score: %d\n", stu1.score)
/* stu2 描述*/
stu2.name = "Lucy"
stu2.age = 18
stu2.score = 80
/* 打印stu2 信息*/
fmt.Printf("stu2 name: %s\n", stu2.name)
fmt.Printf("stu2 age: %d\n", stu2.age)
fmt.Printf("stu2 score: %d\n", stu2.score)
}
结构体作为函数参数
可以像其他数据类型一样将结构体类型作为参数传递给函数。并以以上实例的方式访问结构体变量:
package main
import "fmt"
type Student struct {
name string
age int
score int
}
func main() {
var stu1 Student
var stu2 Student
/* stu1 描述*/
stu1.name = "Jim"
stu1.age = 18
stu1.score = 90
/* 打印stu1 信息*/
printStu(stu1)
/* stu2 描述*/
stu2.name = "Lucy"
stu2.age = 18
stu2.score = 80
/* 打印stu2 信息*/
printStu(stu2)
}
func printStu(stu Student) {
fmt.Printf("stu name: %s\n", stu.name)
fmt.Printf("stu age: %d\n", stu.age)
fmt.Printf("stu score: %d\n", stu.score)
}
结构体指针
- 定义结构体指针类似其他变量, 格式如下
var struct_pointer *Student
- 查看结构体变量地址,可以将 & 符号放置于结构体变量前:
struct_pointer = &Student
- 使用结构体指针访问结构体成员,使用 "." 操作符:
struct_pointer.title
package main
import "fmt"
type Student struct {
name string
age int
score int
}
func main() {
var stu1 Student
var stu2 Student
/* stu1 描述*/
stu1.name = "Jim"
stu1.age = 18
stu1.score = 90
/* 打印stu1 信息*/
printStu(&stu1)
/* stu2 描述*/
stu2.name = "Lucy"
stu2.age = 18
stu2.score = 80
/* 打印stu2 信息*/
printStu(&stu2)
}
func printStu(stu *Student) {
fmt.Printf("stu name: %s\n", stu.name)
fmt.Printf("stu age: %d\n", stu.age)
fmt.Printf("stu score: %d\n", stu.score)
}
有疑问加站长微信联系(非本文作者)