【发布时间】:2014-04-25 08:49:30
【问题描述】:
有一个带有子目录(子包)的包,并且不能从子包中使用包中定义的接口。
所以,
有包 f1 创建子目录 f2
在f1中定义一个接口:
--- /f1/file1.go ---
package f1
type Miner interface {
Foo()
}
func TheFunction( m Miner) { /* blah */ }
在 f2 中创建一个结构,该结构应该是 f1 中接口的一部分:
--- /f1/f2/file2.go ---
package f2
type Mine struct {
i int
}
func (m *Mine) Foo() {/* blah */}
在另一个文件中,我尝试使用包并创建 Mine 结构并作为接口 Miner 传递给函数:
--- ./test_file.go ---
package main
import (
"f1"
"f1/f2"
)
m := f2.Mine{}
f1.TheFunction(&m)
这给出了一个错误“f2.Mine 没有实现接口 f1.Miner...想要 f1.Foo() 但有 f2.Foo()
希望这是有道理的。 那么,如何在子目录 f2 中创建一个使用 f1 接口的结构?
谢谢,
【问题讨论】:
-
您发布的代码在语法上不正确(例如,将类型分配给变量
m)。你能发布一个完整的例子吗?
标签: go