結(jié)構(gòu)體定義
????????go語言的關(guān)鍵字 type 可以將各種基本類型定義為自定義類型伦腐,包括整型损同、字符串粥脚、布爾等纵揍。結(jié)構(gòu)體是一種復(fù)合的基本類型,通過 type 自定義類型進行定義垛玻。
????????結(jié)構(gòu)體的定義格式如下:
? ? ? ? ? ?type 類型名 struct {
????????????字段1? ? 字段1類型,
????????????字段2? ? 字段2類型,
????????????...
????????}
????????說明:
????????類型名:標識自定義結(jié)構(gòu)體的名稱割捅,在同一個包內(nèi)不能重復(fù)。
????????struct{}:表示結(jié)構(gòu)體類型帚桩,type 類型名 struct{} 可以理解為將 struct{} 結(jié)構(gòu)體定義為類型名的類型亿驾。
????????字段1、字段2……:表示結(jié)構(gòu)體字段名账嚎。結(jié)構(gòu)體中的字段名必須唯一莫瞬。
????????字段1類型、字段2類型……:表示結(jié)構(gòu)體字段的類型郭蕉。
結(jié)構(gòu)體實例化
????????1:基本的實例化形式疼邀;結(jié)構(gòu)體本身也是一種類型,可以像基本類型一樣以 var 方式聲明結(jié)構(gòu)體來進行實例化
????????具體實例化格式如下:
????????var ins T? (T是結(jié)構(gòu)體類型? ins為結(jié)構(gòu)體的實例)
????????2:指針類型的形式召锈;使用 new 關(guān)鍵字對結(jié)構(gòu)體類型進行實例化(new 可以對包括結(jié)構(gòu)體旁振,整型,浮點數(shù)烟勋,字符串等進行實例化)
????????格式如下:
????????ins :=new(T)? (T為類型规求,可以使結(jié)構(gòu)體,整型等卵惦, ins為T實例化后保存的變量) ins類型為 *T阻肿, 屬于指針
????????3:取結(jié)構(gòu)體的地址實例化;對結(jié)構(gòu)體取&地址時沮尿,視為對該類型進行了一次 new 操作
????????格式如下:
????????ins := &T{}? (T為結(jié)構(gòu)體類型 ins為結(jié)構(gòu)體的實例丛塌,類型未 *T)
初始化結(jié)構(gòu)體的成員變量
????????結(jié)構(gòu)體在實例化時可以直接對成員變量進行初始化,初始化的方式有兩種:鍵值對方式 和 多個值的列表形式
????????1:鍵值對方式初始化結(jié)構(gòu)體畜疾;鍵對應(yīng)結(jié)構(gòu)體的字段赴邻, 值為對應(yīng)字段需要初始化的值,鍵值對填充是可選的啡捶,不進行初始化的字段可以不填
????????鍵值對初始化的格式如下:
? ? ? ? ins := 結(jié)構(gòu)體類型名 {
? ? ? ? ? ? 字段1 :值1姥敛,
????????????字段2 :值2,
????????????...
????????}
????????鍵值之間以:分隔,鍵值對之間用? ,? 分隔
????????2:多個值列表初始化結(jié)構(gòu)體瞎暑; 在鍵值初始化的基礎(chǔ)上忽略鍵彤敛,轉(zhuǎn)為使用多個值的列表初始化結(jié)構(gòu)體字段
????????多值列表初始化的格式如下:
? ? ? ? ?ins := 結(jié)構(gòu)體類型名 {
????????????字段1 :值1与帆,
????????????字段2 :值2,
????????????...
????????}
????????inst := 結(jié)構(gòu)體類型名 { 值1, 值2 墨榄, ... }
????????注:多值列表進行初始化時必須初始化所有字段玄糟,并且值的填充順序必須和結(jié)構(gòu)體中的字段順序一致,不能和鍵值對初始化混用
? ? ? ? 3:初始化匿名結(jié)構(gòu)體袄秩;匿名結(jié)構(gòu)體沒有類型名稱阵翎,無需通過type關(guān)鍵字定義就可使用
????????匿名結(jié)構(gòu)自定義格式和初始化寫法 (由結(jié)構(gòu)體定義和鍵值對初始化兩部分組成)
定義時沒有結(jié)構(gòu)體類型名,只有字段和類型定義之剧,鍵值對初始化時可由多個鍵值對組成
????????格式如下:
????????ins :=struct {
????????????//匿名結(jié)構(gòu)體字段定義
????????????字段1? ? 字段類型1,
????????????字段2? ? 字段類型2郭卫,
????????????...
????????}{
????????????//字段值初始化
????????????初始化字段1:值1,
????????????初始化字段2:值2,
????????????...
????????}
之后會繼續(xù)完善