登录 主页

go struct 结构体

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 

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论