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

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
 */

猜你喜欢

转载自blog.csdn.net/themagickeyjianan/article/details/107063533
今日推荐