2024-01-26 05:52PM
go 语言中,结构体是一种用户自定义的数据类型,用于组合不同类型的字段
结构体可以包含多个字段,每个字段都可以有不同的类型
1. 定义结构体
要定义结构体,必须要使用 type 和 struct 语句,struct 语句定义了一种新的数据类型,type 语句将名称与类型绑定。
type Book struct {
Name string
Author string
Page int
}
也可以在单行中声明属性相同类型的字段,后面加类型名称,所以结构体也可以这样写:
type Book struct {
Name, Author string
Page int
}
2. 创建结构体实例:
var b Book // 创建一个名为b的Book结构体实例
b := Book{"西游记", "吴承恩", 1250} // 创建并初始化一个Book结构体实例
b := Book{Name: "西游记“, Author:”吴承恩", Page:1250} // 使用字段名进行初始化
3. 访问结构体字段:
fmt.Println(b.Name) // 访问结构体字段Name
b.Author = "吴承恩1“ // 修改结构体字段Author的值
b.Page = 1226 // 修改结构体字段Page的值
eg:
package main
import "fmt"
type Book struct {
Name string
Author string
Page int
}
func main() {
var b Book
b = Book{"西游记", "吴承恩", 1250}
fmt.Println(b.Name) // 访问结构体字段Name
fmt.Println(b.Author)
fmt.Println(b.Page)
b.Author = "吴承恩1" // 修改结构体字段Author的值
b.Page = 1226 // 修改结构体字段Page的值
fmt.Println(b.Author)
fmt.Println(b.Page)
}
运行结果:
meiyi@meiyi-Extensa-2511G:~/workspace/go$ go run go_algorithm.go
西游记
吴承恩
1250
吴承恩1
1226
4. 结构体嵌套:
type Book struct {
Name string
Author string
Page int
}
type Reader struct {
name string
age int
book Book
}
b := Reader {
name: "张三",
age: 18,
book: Book {
Name: "三体",
Author: "刘慈欣",
Page: 2000,
},
}
fmt.Println(b.book.Author) // 访问嵌套结构体的字段
eg:
package main
import "fmt"
type Book struct {
Name string
Author string
Page int
}
type Reader struct {
name string
age int
book Book
}
func main() {
b := Reader {
name: "张三",
age: 18,
book: Book {
Name: "三体",
Author: "刘慈欣",
Page: 2000,
},
}
fmt.Println(b.book.Author) // 访问嵌套结构体的字段
}
运行结果:
meiyi@meiyi-Extensa-2511G:~/workspace/go$ go run go_algorithm.go
刘慈欣
5. 匿名结构体:
b := struct {
Name string
Page int
}{
Name: "三体",
Page: 2000,
}
eg:
package main
import "fmt"
type Book struct {
Name string
Page int
}
func main() {
b := struct {
Name string
Page int
}{
Name: "三体",
Page: 2000,
}
fmt.Println(b)
}
运行结果:
meiyi@meiyi-Extensa-2511G:~/workspace/go$ go run go_algorithm.go
{三体 2000}
6. 结构体作为函数参数:
func printBookInfo(b Book) {
fmt.Println("Name:", b.Name)
fmt.Println("Page:", b.Page)
}
func main() {
b := Book{"三体", 2000}
printBookInfo(b) // 将结构体作为参数传递给函数
}
eg:
package main
import "fmt"
type Book struct {
Name string
Page int
}
func printBookInfo(b Book) {
fmt.Println("Name:", b.Name)
fmt.Println("Page:", b.Page)
}
func main() {
b := Book{"三体", 2000}
printBookInfo(b) // 将结构体作为参数传递给函数
}
运行结果:
meiyi@meiyi-Extensa-2511G:~/workspace/go$ go run go_algorithm.go
Name: 三体
Page: 2000
登录
请登录后再发表评论。
评论列表:
目前还没有人发表评论