/*
go方法
一般的函式定義叫做函式
定義在結構提上面的函式叫做該結構體的方法
*/package main
import (
"fmt"
)type rect struct
/*這個area方法有乙個限定型別*rect
表示這個函式是定義在rect結構體上的方法
*/func (r *rect) area() int
/*方法的定義限定型別可以為結構體型別
也可以是結構體指標型別
區別在於如果限定型別是結構體指標型別
那麼在該方法內部可以修改結構體成員資訊
*/func (r *rect) perim() int
func main()
r.area()
r.perim()
/*go語言會自動識別方法呼叫的引數是結構體變數還是結構體指標
如果要修改結構體內部成員值那麼使用結構體指標作為限定型別
也就是說引數若是結構體變數僅僅會發生值拷貝
*/rp := &r
rp.area()
rp.perim()}/*
方法是函式的語法糖
當函式與某個特定的型別繫結那麼他就是乙個方法
我們可以將方法還原成函式
*/func main()
p.test()
var f1 func(int) = p.test
f1(2)
person.test(p, 3)
var f2 func(person, int) = person.test
f2(p, 4)
}type person struct
func (p *person) test(x int)
/*使用匿名欄位時 實現模擬繼承
即可以直接訪問匿名欄位的方法
有隱藏規則
*/func main() , 25}
p.test()
}type person struct
/*知識點:
struct 的匿名字段
匿名欄位的方法會被繼承
*/type student struct
func (p *person) test()
func (s *student) test()
golang筆記 struct體遍歷
由於文章由markdown的方式編寫,部分鏈結與顯示可能存在問題,大家可以移步到github源檢視 文章由啟發,進行展開發散.利用reflect包對struct結構進行遍歷,對於學習golang有很大的幫助 完整測試 如下,可以用以輸出完整的struct成員,增加遞迴函式可以很容易的做到多種型別輸出...
Golang中的struct比較
可比較的資料型別除了上述三種外,還有boolean,complex,pointer,channel,inte ce和array 不可比較的資料型別包括,slice,map,和function 不包含不可比較的成員變數 reflect.deepequal函式,指標和例項均可以比較 無論有沒有包含不可比...
Golang 入門 結構體 struct
go 通過型別別名 alias types 和結構體的形式支援使用者自定義型別,或者叫定製型別。試圖表示乙個現實世界中的實體。結構體由一系列命名的元素組成,這些元素又被稱為字段,每個欄位都有乙個名稱和乙個型別。結構體的目的就是把資料聚集在一起,以便能夠更加便捷地操作這些資料。結構體的概念在 c 語言...