2 回答

TA貢獻1828條經驗 獲得超4個贊
接口方法意味著您引用(您調用)的方法是對接口值(其方法集包含該方法)的調用。同樣,非接口方法意味著您引用(調用)的方法不是對接口值(而是對具體類型)的調用。
例如:
var r io.Reader = os.Stdin
r.Read(nil) // Interface method: type of r is an interface (io.Reader)
var p image.Point = image.Point{}
p.String() // Non-interface method, p is a concrete type (image.Point)
要演示自動取消引用和地址獲取,請參閱以下示例:
type myint int
func (m myint) ValueInt() int { return int(m) }
func (m *myint) PtrInt() int { return int(*m) }
func main() {
var m myint = myint(1)
fmt.Println(m.ValueInt()) // Normal
fmt.Println(m.PtrInt()) // (&m).PtrInt()
var p *myint = new(myint)
*p = myint(2)
fmt.Println(p.ValueInt()) // (*p).ValueInt()
fmt.Println(p.PtrInt()) // Normal
}
它輸出(在Go Playground上嘗試):
1
1
2
2

TA貢獻1829條經驗 獲得超4個贊
type T struct {}
func (t *T) f() {}
func main() {
x := T{}
x.f()
}
上面,xf是一個非接口方法。
- 2 回答
- 0 關注
- 138 瀏覽
添加回答
舉報