乙個結構體(struct
)就是乙個欄位的集合。
(而 type 的含義跟其字面意思相符。)
下面來寫乙個簡單的例子:
package main
import
"fmt"
/** * 乙個結構體就是乙個欄位的集合
*/type vertex struct
func main() )
}
輸出結果:
結構體欄位使用點號來訪問。
package main
import
"fmt"
type vertex2 struct
func main()
//這邊輸出的結果是6,3
fmt.println(v.x, v.y)
//這邊從新給結構體中的x賦值,x=7
v.x =7
//輸出x=7
fmt.println(v.x)
}
結構體欄位可以通過結構體指標來訪問。
如果我們有乙個指向結構體的指標 p,那麼可以通過 (*p).x 來訪問其欄位 x。不過這麼寫太囉嗦了,所以語言也允許我們使用隱式間接引用,直接寫 p.x 就可以。
package main
import
"fmt"
type vertex3 struct
func main()
//這個是輸出實際的結構體的值,所以
fmt.println(v)
//將結構體給p做引用,p是乙個指向結構體的指標
p := &v
//輸出結果有引用的結果,有乙個&,&
fmt.println(p)
//給結構體中的x賦值為1e9,這個表示1後面跟著9個0
p.x =1e9
//輸出結果
fmt.println(v)
}
輸出結果:
&
結構體文法通過直接列出欄位的值來新分配乙個結構體。
使用 name: 語法可以僅列出部分字段。(欄位名的順序無關。)
特殊的字首 & 返回乙個指向結構體的指標。
package main
import
"fmt"
//定義乙個結構體
type vertex4 struct
var (
//給x、y都賦值
v1 = vertex4 // has type vertex
//給x賦值為1,y未賦值,預設為0
v2 = vertex4 // y:0 is implicit
//x、y都不賦值,預設都為0
v3 = vertex4{} // x:0 and y:0
//指標的方式去賦值
p = &vertex4 // has type *vertex
)func main()
好了,這一次的結構體文法就是這樣子了。 結構體(複雜型別)
1 c語言基本型別 字元型,整型,浮點型 2 結構體 複雜型別 自定義型別 3 定義變數 為了分配空間 型別 變數名 注 分配空間編譯器根據型別自動分配 4 初始化 定義變數同時賦值 5 結構體 1 結構體 自定義 的型別 struct 型別名 2 無巢狀結構體 所有屬性都是基本型別 定義人的型別 ...
Go基礎(複雜型別) 對映
對映將鍵對映到值。對映的零值為 nil nil 對映既沒有鍵,也不能新增鍵。make 函式會返回給定型別的對映,並將其初始化備用。package main import fmt 定義乙個構造 type vertex5 struct 定義乙個map,這個map的鍵是string型別的 var m ma...
Go基礎(複雜型別) 函式值
函式也是值。它們可以像其它值一樣傳遞。函式值可以用作函式的引數或返回值。一 下面來看乙個函式值的例子 package main import fmt math func compute fn func float64,float64 float64 float64 func main fmt.pri...