组合类型
package main import "fmt" func main() { a := teacher{name: "teacher"} a.human.sex = 1 b := student{name: "student"} b.human.sex = 2 fmt.Println(a, b) //将human当做一个普通的字段 c := teacher{name: "teacher", human: human{sex: 1}} d := student{name: "student", human: human{sex: 2}} fmt.Println(c, d) c.name = "tea" d.name = "stu" fmt.Println(c, d) } type teacher struct { human name string } type student struct { human name string } //组合类型,类似于java里面的继承 type human struct { sex int } {{1} teacher} {{2} student} {{1} teacher} {{2} student} {{1} tea} {{2} stu}对象的方法
package main import "fmt" func main() { a := teacher{} a.Print() b := stu{} b.Print() } //对象的方法定义一个接收者 func (a teacher) Print() { fmt.Println("teacher的方法") } func (b stu) Print() { fmt.Println("student的方法") } type teacher struct { name string } type stu struct { name string } teacher的方法 student的方法对象的方法的地址值传递
package main import "fmt" func main() { a := teacher{} a.Print() fmt.Println(a.name) b := stu{} b.Print() fmt.Println(b.name) } //对象的方法引用传递 func (a *teacher) Print() { a.name = "aaa" fmt.Println("teacher的方法") } func (b stu) Print() { b.name = "bbb" fmt.Println("student的方法") fmt.Println(b.name) } type teacher struct { name string } type stu struct { name string }小例子
teacher的方法 aaa student的方法 bbb 这里输出空字符串 package main import "fmt" func main() { var a TZ a.print() (*TZ).print(&a) } //int类型的TZ type TZ int func (tz *TZ) print() { fmt.Println("TZ") } TZ TZ