比如 我要把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
}
```
直接放啊
这是很常见的做法啊
interface是api/接口使用的元素
struct是实际的实现。
这样能避免很多交叉引用的问题。
至于eat,直接做成一个interface
引用后可以直接继承。
#5
更多评论
Soga,因为实现接口需要接收一个结构体,利用同目录,同包,两个文件中结构体共用 的思路 吗?咋给java不一样呢。java entiy文件,实现接口文件,是能放不同目录的。被搞晕了
#2