我被这个难住了。在我正在处理的项目中,我们从 Thrift 生成 go 代码。代码在 A/B/thriftapi 包中创建(以前是 A/B/thrift,这会导致问题,因为所有生成的代码都在导入git.apache.org/thrift.git/lib/go/thrift并导致名称冲突)。
我生成了代码并将代码移动到$GOPATH/src/A/B/D 我然后尝试构建我的项目并收到大量表单错误:
p.X.Read undefined (type Foo has no field or method Read)
我查看了其中一条违规行:
import (
"A/B/D"
"git.apache.org/thrift.git/lib/go/thrift"
)
func(p *Bar) readField1(iprot thrift.TProtocol) error {
p.X = D.NewFoo()
if err := p.X.Read(iprot); err != nil {
...
}
由于我使用的是 IntelliJ,因此我按 CTRL+单击该Read()方法,果然它跳转$GOPATH/A/B/D/ttypes.go到该方法
func (p *Foo) Read(iprot thrift.TProtocol) error {
...
}
这正是我希望方法所在的文件,它是一个指向指针的方法,Foo所以那里没有问题。一切似乎都应该是正确的,但是在 IntelliJ 和命令行中我都遇到了这些问题。
任何想法可能会出错?当它告诉我该方法不存在时令人沮丧,但如果我点击它(并且还会在智能感知中弹出)
编辑 - 每条评论
type Bar struct {
X Foo `thrift:"x,1,required"`
}
MYYA
相关分类