①: golang 中函数和方法有点小区分.
②: 方法的使用可以让函数具有"多态性", 改变person即可实现
package main import "fmt" type course struct { score int } func foo(c course) { fmt.Printf("score: => %d", c.score) } func main() { cou := course{ score: 59, } foo(cou) //函数调用 }
package main import "fmt" type person struct { name string age int } func (p person) highSchool() { fmt.Printf("name: => %s\nage: => %d", p.name, p.age) } func main() { per := person{ name: "xiaodingdang", age: 1000, } per.highSchool() //方法调用 }
package main import "fmt" type person struct { name string age int } type course struct { score int } func (p person) foo(c course) { fmt.Printf("name: %s\nage: %d\nscore: %d", p.name, p.age, c.score) } func main() { per := person{ name: "xiaodingdang", age: 1000, } cou := course{ score: 59, } per.foo(cou) //调用 }