理解go語言中的方法也是函式的一種,只不過在func和函式名之間增加了引數(型別接收器),接收器的型別可以是自定義的結構體或者非結構體型別,也可以是重定義的基本型別如int、string或指標型別,支援在方法內部訪問該引數。
語法
func (param type) methodname()
下面我們用乙個例子試一下,方法mybread接收乙個bread結構體型別的引數m,然後輸出一句話
package main
import "fmt"
type bread struct
func (m bread) mybread()
func main()
bread1.mybread()
}
方法mybread接收乙個bread結構體型別的引數m,然後在內部訪問了接收器m的兩個字段並列印出來,我們可以看到,方法使用 . 操作符來訪問的
指標接收器上面的是使用值接收器的方法,下面我們試一下指標接收器
package main
import "fmt"
type bread struct
func (m *bread) mybread()
func main()
(&bread1).mybread()
fmt.println(bread1)
}
mybread方法有乙個指標接收器,接收(m *bread)指標型別,方法內部對m的呼叫是可見的,因為mybread方法接收指標型別引數,所以我們在呼叫的時候(&bread1).mybread(),對於呼叫者來說price是可見的,(&bread1).mybread()可以寫成bread1.mybread(),go會自動識別並轉換為(&bread1).mybread()的
以上**輸出
未完待續...
go 方法 摘自go語言學習筆記
如何選擇方法的receiver型別 要修改例項狀態,用 t 無須修改狀態的小物件或固定值,建議用t 大物件建議用 t,以減少複製成本 引用型別 字串 函式等指標包裝物件,直接用t 若包含mutex等同步字段,用 t,避免因複製造成鎖操作無效 其他無法確定的情況,都用 t 方法集 型別t方法集包含所有...
go語言學習筆記
type info struct func main fmt.println info1 data,json.marshal info1 fmt.println string data 輸出 這裡要特別注意的是 json 冒號後面和雙引號之間千萬不要有空格!被坑慘了 go語言 import的包的前面...
Go語言 學習筆記
import 下劃線 如 import hello imp 的作用 當匯入乙個包時,該包下的檔案裡所有init 函式都會被執行,然而,有些時候我們並不需要把整個包都匯入進來,僅僅是是希望它執行init 函式而已。這個時候就可以使用 import 引用該包。即使用 import 包路徑 只是引用該包,...