package main import "fmt" // 项目开发中可以为type声明的类型编写一些方法,从而实现对象.方法的操作 // 声明类型 type myInt int // int有的功能myInt都有 // 为MyInt类型自定义一个指针方法 // 此处可以使指针,可以是类型 *myInt myInt // 如果是类型会拷贝一份,如果是指针不拷贝 func (i *myInt) doSomething(a, b int) int { return a + b + int(*i) } // 结构体也是基于type声明的类型,所以也可以使用此方式为结构体定义一些方法 type person struct { name string age int blog string } // 为person结构体类型自定义一个指针方法 // 注意:此处如果不是指针类型的话,在执行方式时,结构体对象就会被重复拷贝一份 // 如果是指针类型,就不会拷贝,节省内存空间 func (p *person) doSomething(a, b int) int { return a + b + p.age } func main() { var a myInt = 11 ret := a.doSomething(1, 3) fmt.Println(ret) p := person{"mayanan", 28, "www.mayanan.cn"} age := p.doSomething(0, 0) fmt.Println(age) }