如何定义结构体
以下为定义结构体和三种创建结构体的方式
代码如下:
package main
import "fmt"
//定义结构体
type Books struct {
title string
author string
subject string
book_id int
}func main() {
// 使用默认格式创建结构体
fmt.Println(Books{"Go 语言", "sy", "Go 语言教程", 1})// 使用 key => value 格式创建结构体
fmt.Println(Books{title: "Go 语言", author: "sy", subject: "Go 语言教程", book_id: 1})// 忽略的字段为 0 或 空
fmt.Println(Books{title: "Go 语言", author: "sy"})
}
输出结果展示:
如何访问结构体成员变量
代码如下:
package main
import "fmt"
type Books struct {
title string
author string
subject string
book_id int
}func main() {
//声明 Book1 为 Books 结构体类型
var Book1 Books
var Book2 Books//描述 Book1,访问成员变量
Book1.title = "Go 语言"
Book1.author = "sy"
Book1.subject = "Go 语言教程"
Book1.book_id = 1//描述 Book2
Book2.title = "Python "
Book2.author = "sy"
Book2.subject = "Python 语言教程"
Book2.book_id = 2//打印 Book1 信息 ,访问成员变量
fmt.Printf( "Book 1 title : %s\n", Book1.title)
fmt.Printf( "Book 1 author : %s\n", Book1.author)
fmt.Printf( "Book 1 subject : %s\n", Book1.subject)
fmt.Printf( "Book 1 book_id : %d\n", Book1.book_id)//打印 Book1 信息
fmt.Printf( "Book 2 title : %s\n", Book2.title)
fmt.Printf( "Book 2 author : %s\n", Book2.author)
fmt.Printf( "Book 2 subject : %s\n", Book2.subject)
fmt.Printf( "Book 2 book_id : %d\n", Book2.book_id)
}
输出结果展示:
如何用结构体作为函数参数
代码如下:
package main
import "fmt"
type Books struct {
title string
author string
subject string
book_id int
}//声明printBook函数,Books结构体作为函数参数
func printBook( book Books ) {
fmt.Printf( "Book title : %s\n", book.title)
fmt.Printf( "Book author : %s\n", book.author)
fmt.Printf( "Book subject : %s\n", book.subject)
fmt.Printf( "Book book_id : %d\n", book.book_id)
}func main() {
//声明 Book1 为 Books 结构体类型
var Book1 Books
var Book2 Books//描述 Book 1
Book1.title = "Go 语言"
Book1.author = "sy"
Book1.subject = "Go 语言教程"
Book1.book_id = 1//描述 Book 2
Book2.title = "Python"
Book2.author = "sy"
Book2.subject = "Python 语言教程"
Book2.book_id = 2//调用printBook函数,把Book1的参数传进去, 打印 Book1 信息
printBook(Book1)//调用printBook函数,把Book2的参数传进去, 打印 Book2 信息
printBook(Book2)
}
运行结果展示:
如何使用结构体指针
代码如下:
package main
import "fmt"
type Books struct {
title string
author string
subject string
book_id int
}//将结构体指针作为函数参数
func printBook( book *Books ) {
fmt.Printf( "Book title : %s\n", book.title)
fmt.Printf( "Book author : %s\n", book.author)
fmt.Printf( "Book subject : %s\n", book.subject)
fmt.Printf( "Book book_id : %d\n", book.book_id)
}func main() {
var Book1 Books
var Book2 BooksBook1.title = "Go 语言"
Book1.author = "sy"
Book1.subject = "Go 语言教程"
Book1.book_id = 1Book2.title = "Python"
Book2.author = "sy"
Book2.subject = "Python 语言教程"
Book2.book_id = 2//访问结构体指针&Book1, 打印 Book1 信息
printBook(&Book1)//访问结构体指针&Book1, 打印 Book1 信息
printBook(&Book2)}
运行结果如下:
定义结构体的指针变量
指针变量可以存储结构体变量的地址
var 指针变量 *Books
查看结构体变量地址
指针变量 = &Book1
使用结构体指针访问结构体成员变量
指针变量.成员变量
以上为go语言结构体的详细解析。
喜欢的可以点赞or收藏!