Go 結構 學習筆記
結構struct
- Go 中的struct與C中的struct非常相似,並且Go沒有class
- 使用 type struct{} 定義結構,名稱遵循可見性規則
- 支援指向自身的指標型別成員
- 支援匿名結構,可用作成員或定義成員變數
- 匿名結構也可以用於map的值
- 可以使用字面值對結構進行初始化
- 允許直接通過指標來讀寫結構成員
- 相同型別的成員可進行直接拷貝賦值
- 支援 == 與 !=比較運算子,但不支援 > 或 <
- 支援匿名欄位,本質上是定義了以某個型別名為名稱的欄位
- 嵌入結構作為匿名欄位看起來像繼承,但不是繼承
- 可以使用匿名欄位指標
1、結構值、引用拷貝
package main
import (
"fmt"
)
type Person struct {
name string
age int
}
func main() {
//這裡也可以通過新增&Person,來實現地址引用
per := Person{
name: "jiankunking",
age: 18,
}
fmt.Println(per)
//傳遞的是值拷貝
B(per)
fmt.Println(per)
C(&per)
fmt.Println(per)
}
func B(per Person) {
per.name = "B"
per.age = 2
fmt.Println(per)
}
func C(per *Person) {
per.name = "C"
per.age = 3
fmt.Println("per", per)
fmt.Println("*per", *per)
}
輸出結果:
package main
import (
"fmt"
)
type Person struct {
name string
age int
}
func main() {
per := Person{
name: "jiankunking",
age: 18,
}
//不取地址 則傳遞的是值拷貝
per2222 := per
per2222.age = 23
fmt.Println("per", per)
fmt.Println("per2222", per2222)
}
輸出結果:
2、匿名結構
package main
import (
"fmt"
)
func main() {
per := &struct {
name string
age int
}{
name: "hello",
age: 12,
}
fmt.Println(per)
}
輸出結果:
3、巢狀結構
package main
import (
"fmt"
)
type Person struct {
name string
age int
contact struct {
tel int
add string
}
}
func main() {
per := &Person{
name: "jiankunking",
age: 18,
}
per.contact.add = "lao shan"
per.contact.tel = 24923498239489
fmt.Println(per)
}
輸出結果:
4、組合結構
package main
import (
"fmt"
)
type humman struct {
sex string
}
type Person struct {
humman
name string
age int
}
func main() {
per := Person{
name: "jiankunking",
age: 18,
humman: humman{
sex: "nan",
},
}
per.sex = "gril"
fmt.Println("per", per)
}
輸出結果:
本文參考整理自:《Go 程式設計基礎》
個人微信公眾號:
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- GO 學習筆記->結構體Go筆記結構體
- Go語言學習筆記 - PART7 - 結構體Go筆記結構體
- struct 結構體 -Go 學習記錄Struct結構體Go
- GO語言學習筆記-包結構篇 Study for Go ! Chapter eight - Package StructureGo筆記APTPackageStruct
- 資料結構學習筆記資料結構筆記
- Go 學習筆記Go筆記
- 結構動力學教材-學習筆記筆記
- Go 筆記之程式結構Go筆記
- 資料結構學習筆記1資料結構筆記
- Oracle體系結構學習筆記Oracle筆記
- 資料結構學習筆記--棧資料結構筆記
- GO 方法學習筆記Go筆記
- go 學習筆記---切片Go筆記
- go channel學習筆記Go筆記
- go defer 學習筆記Go筆記
- jQuery 學習筆記:jQuery 程式碼結構jQuery筆記
- 結構化程式設計--學習筆記程式設計筆記
- 資料結構學習筆記-堆排序資料結構筆記排序
- go學習筆記——gin框架Go筆記框架
- 【學習筆記】Go Modules 使用筆記Go
- go 學習筆記---map(字典)Go筆記
- go 閉包學習筆記Go筆記
- Go 進階學習筆記Go筆記
- 資料結構——並查集 學習筆記資料結構並查集筆記
- 2.1資料結構學習筆記--佇列資料結構筆記佇列
- go 學習筆記之初識 go 語言Go筆記
- Go型別特性-學習筆記Go型別筆記
- 【Go學習筆記16】解析xmlGo筆記XML
- Go 入門指南學習筆記Go筆記
- go-ethereum學習筆記(一)Go筆記
- Go學習筆記-GMP詳解Go筆記
- Go學習筆記-Zap日誌Go筆記
- go語言學習-結構體Go結構體
- 安卓學習筆記---開篇(目錄結構)安卓筆記
- Solidity語言學習筆記————15、結構體StructSolid筆記結構體Struct
- [學習筆記] Splay & Treap 平衡樹 - 資料結構筆記資料結構
- 資料結構學習筆記-佛洛依德演算法資料結構筆記演算法
- OpenXml SDK學習筆記(1):Word的基本結構XML筆記
- Laravel8學習筆記01 - 目錄結構Laravel筆記