结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性:
Title :标题
Author : 作者
Subject:学科
ID:书籍ID
结构体知识点代码集合
结构体指针和普通结构体区别:使不使用结构体指针和使不使用指针的出发点是一样的,那就是是否试图在函数内部改变传递进来的参数的值
package main
import "fmt"
type Books struct {
title string
author string
subject string
bookId int
}
func main() {
// 创建一个新的结构体
fmt.Println(Books{"Go 语言", "www.runoob.com", "Go 语言教程", 6495407})
// 也可以使用 key => value 格式
fmt.Println(Books{title: "Go 语言", author: "www.runoob.com", subject: "Go 语言教程", bookId: 6495407})
// 忽略的字段为 0 或 空
fmt.Println(Books{title: "Go 语言", author: "www.runoob.com"})
fmt.Println("----------------------------------------------------------------------------")
var book1 Books
var book2 Books
book1.title = "1111fewdfew"
book1.author = "111111fefefefef"
book1.subject = "11111111rerererere"
book1.bookId = 111111111111111
book2.title = "222222frgrvr"
book2.author = "222222grrggrgrg"
book2.subject = "2222222ffggggghhh"
book2.bookId = 222222222222222
fmt.Printf("book1 title:%s\n",book1.title)
fmt.Printf("book1 author:%s\n",book1.author)
fmt.Printf("book1 subject:%s\n",book1.subject)
fmt.Printf("book1 bookid:%d\n",book1.bookId)
fmt.Printf("book2 title:%s\n",book2.title)
fmt.Printf("book2 author:%s\n",book2.author)
fmt.Printf("book2 subject:%s\n",book2.subject)
fmt.Printf("book2 bookid:%d\n",book2.bookId)
fmt.Println("-----------------------------------直接传入,修改完出来数据没变-----------------------------------------")
printBook(book1)
printBook(book2)
fmt.Printf("book1 title:%s\n",book1.title)
fmt.Printf("book1 author:%s\n",book1.author)
fmt.Printf("book1 subject:%s\n",book1.subject)
fmt.Printf("book1 bookid:%d\n",book1.bookId)
fmt.Printf("book2 title:%s\n",book2.title)
fmt.Printf("book2 author:%s\n",book2.author)
fmt.Printf("book2 subject:%s\n",book2.subject)
fmt.Printf("book2 bookid:%d\n",book2.bookId)
fmt.Println("------------------------------------------指针传入,数据修改完出来,数据变了----------------------------------")
printBook2(&book1)
printBook2(&book2)
fmt.Printf("book1 title:%s\n",book1.title)
fmt.Printf("book1 author:%s\n",book1.author)
fmt.Printf("book1 subject:%s\n",book1.subject)
fmt.Printf("book1 bookid:%d\n",book1.bookId)
fmt.Printf("book2 title:%s\n",book2.title)
fmt.Printf("book2 author:%s\n",book2.author)
fmt.Printf("book2 subject:%s\n",book2.subject)
fmt.Printf("book2 bookid:%d\n",book2.bookId)
}
func printBook(books Books) {
books.bookId = 0000
fmt.Printf("book3 title:%s\n",books.title)
fmt.Printf("book3 author:%s\n",books.author)
fmt.Printf("book3 subject:%s\n",books.subject)
fmt.Printf("book3 bookid:%d\n",books.bookId)
}
func printBook2( book *Books ) {
book.bookId = 0000
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.bookId)
}