Go语言-结构体详解

如何定义结构体

以下为定义结构体和三种创建结构体的方式

代码如下:

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 Books

    Book1.title = "Go 语言"
    Book1.author = "sy"
    Book1.subject = "Go 语言教程"
    Book1.book_id = 1

    Book2.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收藏!

猜你喜欢

转载自blog.csdn.net/m0_70819559/article/details/129428570