对象的创建 和 理解go中的鸭子类型

    技术2022-07-11  115

    1)player.go

    package player type Player struct { id int name string } func (self *Player) GetId() int { return self.id } func (self *Player) GetName() string { return self.name } func NewPlayer(id int, name string) *Player { return &Player{ id: id, name: name, } }

    2)main.go(example位于src下,src的上一级则为GOPATH)

    package main import ( "example/chapter4/demo06/player" "fmt" ) func main() { p1 := player.NewPlayer(1, "jianan") fmt.Println(p1.GetId(), p1.GetName()) } /* 1.直接运行: 直接goland中点击箭头即可 2.编译 ➜ src pwd /Users/jianan/Documents/my_git/go/src ➜ src go install example/chapter4/demo06 3.运行二进制 ➜ bin pwd /Users/jianan/Documents/my_git/go/bin ➜ bin ./demo06 1 jianan */

    ---------------

    player.go

    package player /** 鸭子类型,只有GetId */ type IPlayer interface { GetId() int } /** 玩家类 */ type Player struct { id int name string } func (self *Player) GetId() int { return self.id } func (self *Player) GetName() string { return self.name } func NewPlayer(id int, name string) *Player { return &Player{ id: id, name: name, } }

    main.go

    package main import ( "example/chapter4/demo06/player" "fmt" ) func main() { var p1 player.IPlayer = player.NewPlayer(1, "jianan") fmt.Println(p1.GetId()) } /* 1 */

     

     

    Processed: 0.017, SQL: 9