关于方法的一些知识点:
type T struct {
thing int
}
func (t *T)change() {
t.thing = 1
}
func (t T)Write() string {
return fmt.Sprint(t)
}
func () {
t1 := T{0} //t1是值类型
t1.change()//值类型调用指针方法
fmt.Println(t1.Write())
t2 := &{0}//t2是指向T的一个指针
t2.change()
fmt.Println(t2.Write())//指针调用值方法
}
/*
{1}
{1}
*/
无论结构体接收者是值类型或是指针,都可以互相调用.t1.change()
替代了 (&t1).change()
t2.Write()
替代了 (*t2).Write()
对于类型T,如果*T上存在方法 Meth()
,并且 t
是这个类型的变量,那么 t.Meth()
会被自动转换为 (&t).Meth()