本文目錄一覽:
- 1、golang中級進階(二):結構體
- 2、Golang入門到項目實戰 | golang介面嵌套
- 3、golang中map能嵌套map嗎
- 4、Golang入門到項目實戰 | golang嵌套結構體
- 5、golang 中xml中嵌套一個xml怎麼解析
golang中級進階(二):結構體
目錄
一、結構體詳解
1. 結構體定義
2. 實例化結構體的7種方法
二、結構體方法
1. 結構體的方法定義
2. 結構體內自定義方法的引用
3. 任意類型添加方法
三、嵌套、繼承
1. 匿名結構體
2. 結構體中可以定義任意類型的欄位
3. 結構體嵌套結構體
4. 結構體嵌套匿名結構體
5. 結構體嵌套多個匿名結構體
6. 結構體繼承
四、結構體和JSON相互轉換
1. 結構體轉化成json
2. json轉化成結構體
3. 結構體標籤 tag
4. 嵌套結構體和json的序列化反序列化
Golang 中沒有「類」的概念,Golang 中的結構體和其他語言中的類有點相似。和其他面向對 象語言中的類相比,Golang 中的結構體具有更高的擴展性和靈活性。
Golang 中的基礎數據類型可以表示一些事物的基本屬性,但是當我們想表達一個事物的全 部或部分屬性時,這時候再用單一的基本數據類型就無法滿足需求了,Golang 提供了一種 自定義數據類型,可以封裝多個基本數據類型,這種數據類型叫結構體,英文名稱 struct。 也就是我們可以通過 struct 來定義自己的類型了。
使用 type 和 struct 關鍵字來定義結構體,具體代碼格式如下:
type 類型名 struct {
欄位名 欄位類型
欄位名 欄位類型 …
}
其中:
• 類型名:表示自定義結構體的名稱,在同一個包內不能重複。
• 欄位名:表示結構體欄位名。結構體中的欄位名必須唯一。
• 欄位類型:表示結構體欄位的具體類型。
在 go 語言中,沒有類的概念但是可以給類型(結構體,自定義類型)定義方法。所謂方法 就是定義了接收者的函數。接收者的概念就類似於其他語言中的 this 或者 self。
方法的定義格式如下:
func (接收者變數 接收者類型) 方法名(參數列表) (返回參數) {
函數體
}
注意:想改變結構體內的值,必須先變成指針。
在 Go 語言中,接收者的類型可以是任何類型,不僅僅是結構體,任何類型都可以擁有方法。 舉個例子,我們基於內置的 int 類型使用 type 關鍵字可以定義新的自定義類型,然後為我們 的自定義類型添加方法。
注意:匿名結構體中不允許出現多個重複的類型
注意:如果結構體裡面有私有屬性也就是小寫定義的欄位,則不會被json使用
Golang入門到項目實戰 | golang介面嵌套
介面可以通過嵌套,創建新的介面。例如:飛魚,既可以飛,又可以游泳。我們創建一個飛Fly介面,創建一個游泳介面Swim,飛魚介面由這兩個介面組成。
飛Fly介面
創建Swimmer介面
組合一個介面FlyFish
創建一個結構體Fish
實現這個組合介面
測試
運行結果
golang中map能嵌套map嗎
自然是可以的,當然map不能作為另一個map的key,只能做value。請參考以下例子:
package main
import “fmt”
type t_classmates map[string]int
func main() {
domitory := make(map[string]t_classmates)
class1 := make(t_classmates)
class1[“zhangsan”] = 23
class1[“lisi”] = 24
domitory[“308”] = class1
domitory[“309”] = t_classmates{“wangwu”: 25, “zhaoliu”: 26,}
fmt.Println(domitory)
}
Golang入門到項目實戰 | golang嵌套結構體
go語言沒有面向對象編程思想,也沒有繼承關係,但是可以通過結構體嵌套來實現這種效果。
下面通過實例演示如何實現結構體嵌套,假如有一個人Person結構體,這個人還養了一個寵物Dog結構體
下面我們來看一下:
Dog結構體
Person結構體
訪問它們
運行結果
golang 中xml中嵌套一個xml怎麼解析
「XML 設計器」仍然可用於創建和編輯 XML 架構文件。但是,在當前版本中,用於創建和編輯類型化數據集的設計器是「數據集設計器」。有關更多信息,請參見 數據集設計器。此頁假設您使用的是「XML 設計器」。若要使用「XML 設計器」打開一個類型化數據集…
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/207065.html