go語言學習筆記 方法 method

2021-08-21 21:59:37 字數 1092 閱讀 8961

理解

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 包路徑 只是引用該包,...