package main; import "fmt" //重新定义一个类型 //为该INT类型扩展方法 type INT int; type A struct { name string; } type B struct { name string; } func main() { a := A{}; a.Print(); //指针传递 a.Print2(); fmt.Println(a); //同上 (*A).Print2(&a); b := B{}; b.Print(); var c INT; c.Print(); } //方法method //GO中没有class,但有method //为结构A绑定方法 func (a A) Print() { fmt.Println("A"); } //指针传递 func (a *A) Print2() { //修改了变量的的值 //方法中是可以访问结构的私有字段 a.name = "A"; } //为结构B绑定方法 func (b B) Print() { fmt.Println("B"); } //给INT类型绑定Print方法 func (i INT) Print() { fmt.Println("INT"); }