package mainimport ( "fmt")type Animal interface { move()}type Human struct { i int}func (r Human) move() { // 注意 fmt.Println("人类行走") r.i++}type Bird struct { i int}func (r *Bird) move() { fmt.Println("鸟类行走") r.i++}func moveTest1(animal Animal) { animal.move()}// 虽然这个函数的定义没有错误,但实际上完全用不上!// 因为指向接口的指针,在接口实现类中,是无法转换的func moveTest2(animal *Animal) { (*animal).move()}func main() { h1 := Human{0} moveTest1(h1) moveTest1(h1) moveTest1(h1) fmt.Println(h1.i) fmt.Println("----------------") h2 := &Human{0} moveTest1(h2) moveTest1(h2) moveTest1(h2) fmt.Println(h2.i) fmt.Println("----------------") // h3 := Human{0}// moveTest2(h3)// moveTest2(h3)// moveTest2(h3)// fmt.Println(h3.i)// // fmt.Println("----------------") // b1 := Bird{0}// moveTest1(b1)// moveTest1(b1)// moveTest1(b1)// fmt.Println(b1.i)// // fmt.Println("----------------") b2 := &Bird{0} moveTest1(b2) moveTest1(b2) moveTest1(b2) fmt.Println(b2.i) fmt.Println("----------------") // b3 := &Bird{0}// moveTest2(b3)// moveTest2(b3)// moveTest2(b3)// fmt.Println(b3.i)// // fmt.Println("----------------")}
人类行走
人类行走
人类行走
0
----------------
人类行走
人类行走
人类行走
0
----------------
鸟类行走
鸟类行走
鸟类行走
3
----------------
以上用了一个简单说明了golang在使用中需要注意的地方。
总结以上是内存溢出为你收集整理的golang接口的实现以及注意事项。全部内容,希望文章能够帮你解决golang接口的实现以及注意事项。所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)