Go 语言结构体

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boyun58/article/details/88866354

Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。

定义结构体
结构体定义需要使用 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 Books struct {
	title string
	author string
	subject string
	book_id int
}


func main(){
	fmt.Println(Books{"程序语言", "ABs", "Go 语言程序教程", 123456})
	fmt.Println(Books{title: "程序语言", author: "ABs", subject: "Go 语言程序教程", book_id: 123456})
	fmt.Println(Books{title: "Go 语言", author: "ABs"})
}

访问结构体成员
访问结构体成员,需要使用点号 . 操作符

package main 

import "fmt"


type Books struct {
	title string
	author string
	subject string
	book_id int
}


func main(){
	var Book1 Books
	var Book2 Books

	Book1.title = "程序语言"
	Book1.author = "ABs"
	Book1.subject = "Go 语言教程"
	Book1.book_id = 123456

	Book2.title = "程序语言"
	Book2.author = "ABs"
	Book2.subject = "Py 语言教程"
	Book2.book_id = 223456

	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)

	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)
}
--------------------------------------------------------------------------------
Book 1 title : 程序语言
Book 1 author : ABs
Book 1 subject : Go 语言教程
Book 1 book_id : 123456
Book 2 title : 程序语言
Book 2 author : ABs
Book 2 subject : Py 语言教程
Book 2 book_id : 223456

结构体作为函数参数

package main 

import "fmt"


type Books struct {
	title string
	author string
	subject string
	book_id int
}


func main(){
	var Book1 Books
	var Book2 Books

	Book1.title = "程序语言"
	Book1.author = "ABs"
	Book1.subject = "Go 语言教程"
	Book1.book_id = 123456

	Book2.title = "程序语言"
	Book2.author = "ABs"
	Book2.subject = "Py 语言教程"
	Book2.book_id = 223456

	printBook(Book1)

	printBook(Book2)

}


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)
}
------------------------------------------------------------------------
Book  title : 程序语言
Book  author : ABs
Book  subject : Go 语言教程
Book  book_id : 123456
Book  title : 程序语言
Book  author : ABs
Book  subject : Py 语言教程
Book  book_id : 223456

结构体指针

#定义指向结构体的指针类似于其他指针变量
var struct_pointer *Books

#定义的指针变量可以存储结构体变量的地址。查看结构体变量地址,可以将 & 符号放置于结构体变量前
struct_pointer = &Book1;

#使用结构体指针访问结构体成员,使用 "." 操作符
struct_pointer.title;

例如

package main 

import "fmt"


type Books struct {
	title string
	author string
	subject string
	book_id int
}


func main(){
	var Book1 Books
	var Book2 Books

	Book1.title = "程序语言"
	Book1.author = "ABs"
	Book1.subject = "Go 语言教程"
	Book1.book_id = 123456

	Book2.title = "程序语言"
	Book2.author = "ABs"
	Book2.subject = "Py 语言教程"
	Book2.book_id = 223456

	printBook(&Book1)

	printBook(&Book2)

}


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)
}
------------------------------------------------------------------
Book  title : 程序语言
Book  author : ABs
Book  subject : Go 语言教程
Book  book_id : 123456
Book  title : 程序语言
Book  author : ABs
Book  subject : Py 语言教程
Book  book_id : 223456

猜你喜欢

转载自blog.csdn.net/boyun58/article/details/88866354