比如 我要把Beahavior 放到叫interfaces的目录,结构体Dog单独放一个叫model的目录,Eat放到 其它目录文件实现。怎么做呢?
```go
package main
import (
"fmt"
)
// 定义接口
type Beahavior interface {
Run() string
Eat(thing string) string
}
type Dog struct {
Name string
}
func (d * Dog) Eat(thing string ) string {
return "hello i am eating "+thing
}
func (d * Dog) Run() string {
return "hello i am running"
}
func main() {
d := Dog{Name:"旺财"}
res := d.Eat("apple")
fmt.Println(res)
}
```
比如 下面好像行不通,提示无法解析model.Dog
demo/model/s.go //demo是根目录
```go
import "demo/model"
func (d * model.Dog) Eat(thing string ) string {
return "hello i am eating "+thing
}
```
不允许这么定义,最多同一个包下.但是通常type和它的方法会一起定义在一个文件中.而且吧,如果你非要这么奇怪,可以这样写:
```go
func Eat(d * model.Dog, thing string ) string {
return "hello i am eating "+thing
}
```
#6
更多评论
Soga,因为实现接口需要接收一个结构体,利用同目录,同包,两个文件中结构体共用 的思路 吗?咋给java不一样呢。java entiy文件,实现接口文件,是能放不同目录的。被搞晕了
#2