Go語言入門必知教程-結構

結構是不同類型的數據的集合,這些數據叫作結構的字段。Golang通過組合一個或多個類型(包括內置類型和用戶定義類型)來聲明和創建新的數據類型。結構中的每個數據字段聲明都必須是已知類型,這些類型可以是內置類型或其他用戶定義類型。

結構是Golang中創建用戶定義類型的唯一方法,結構是通過一組固定且唯一的字段來聲明。結構使得程序模塊化,並允許在系統範圍內創建和傳遞複雜的數據結構。結構常用於創建記錄集。

結構的聲明從關鍵字type開始,然後是新結構的名稱,最後是關鍵字struct,花括號內,指定了一系列具有名稱和類型的數據字段:

Go語言入門必知教程-結構

聲明具有三個不同數據類型的字段的結構類型,名字叫作rectangle。定義好新結構後,就可以使用它的字面量。

Go語言入門必知教程-結構

rectangle結構及其字段不會導出到其他包,因為標識符是以小寫字母開頭。在Golang中,如果名稱以大寫字母開頭,標識符可以導出到其他包,否則只能限制在所聲明它的包中訪問。

var關鍵字聲明結構變量rect,然後使用點表示法將值賦給結構字段。

Go語言入門必知教程-結構

創建結構rectangle的實例,使用結構字面量給它每個字段賦初始值:

Go語言入門必知教程-結構

使用關鍵字new創建結構實例

new創建的實例,返回的是實例的指針,也可以用點符號訪問它的字段:

Go語言入門必知教程-結構

使用取指符&創建結構實例

取指符同樣返回的是實例的指針:

Go語言入門必知教程-結構

創建有嵌套的結構類型

可以使用其他結構類型作為結構字段的類型,創建具有嵌套的結構。將一個結構嵌套到另一個結構中是創建更復雜結構的有效方法:

Go語言入門必知教程-結構

使用字段標籤

在定義結構時,可選擇地為每個字段添加標籤,標籤用生字符串表示,用反引號``包圍

標籤常用於與其它數據格式如json、xml等交互時作為目標格式的屬性使用,被正常的程序流所忽略

Go語言入門必知教程-結構

添加方法到結構中

使用方法接收器把方法添加到結構類型當中,方法接收器在定義函數時寫在關鍵字func和函數字之間,即聲明一個結構類型的變量,函數體內部就可以引用該結構實例:

函數定義了接收器之後,該函數成為接收器結構類型的方法,所有與接收器類型相同的結構實例都可以通過點符號調用該函數。

Go語言入門必知教程-結構

為結構字段分配默認值

使用構造函數可以實現自定義默認值的賦值方法。Info函數用於為一個結構實例的字段賦予默認值,因為要改變函數外部實例的值,所以接收器定義為指針。

這種構造函數只是一種技巧方法而不是Golang規定中的一部分。

Go語言入門必知教程-結構

查詢結構的類型

reflect包支持檢查結構的底層類型:

Go語言入門必知教程-結構

比較兩個結構

結構可以使用比較操作符進行比較:

Go語言入門必知教程-結構

按值和按指針複製結構類型

r2將與r1相同,它是r1的副本,而不是對它的引用。對r2所做的任何更改都不會應用於r1,反之亦然。r3和r1引用同一個實例,當r3被更新時,r1也會變化,因為r1和r3引用的是相同的內存空間。

Go語言入門必知教程-結構


分享到:


相關文章: