天天看點

Golang學習筆記 - 13 :結構體

Go 語言中數組可以存儲同一類型的資料,但在結構體中我們可以為不同項定義不同的資料類型。

結構體是由一系列具有相同類型或不同類型的資料構成的資料集合。

結構體表示一項記錄,比如儲存圖書館的書籍記錄,每本書有以下屬性:

Title :标題

Author : 作者

Subject:學科

ID:書籍ID

結構體的基本格式

type struct_variable_type struct {
   member definition;
   member definition;
   ...
   member definition;
}
           

通路結構體成員

如果要通路結構體成員,需要使用點号 . 操作符,格式為:

結構體.成員名"

執行個體

package main

import "fmt"

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

func main() {
   var Book1 Books        /* 聲明 Book1 為 Books 類型 */
   var Book2 Books        /* 聲明 Book2 為 Books 類型 */

   /* book 1 描述 */
   Book1.title = "Go 語言"
   Book1.author = "www.runoob.com"
   Book1.subject = "Go 語言教程"
   Book1.book_id = 6495407

   /* book 2 描述 */
   Book2.title = "Python 教程"
   Book2.author = "www.runoob.com"
   Book2.subject = "Python 語言教程"
   Book2.book_id = 6495700

   /* 列印 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)

   /* 列印 Book2 資訊 */
   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
}

func main() {
   var Book1 Books        /* 聲明 Book1 為 Books 類型 */
   var Book2 Books        /* 聲明 Book2 為 Books 類型 */

   /* book 1 描述 */
   Book1.title = "Go 語言"
   Book1.author = "www.runoob.com"
   Book1.subject = "Go 語言教程"
   Book1.book_id = 6495407

   /* book 2 描述 */
   Book2.title = "Python 教程"
   Book2.author = "www.runoob.com"
   Book2.subject = "Python 語言教程"
   Book2.book_id = 6495700

   /* 列印 Book1 資訊 */
   printBook(Book1)

   /* 列印 Book2 資訊 */
   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);
}