循环import

循环import

# 具体遇到的问题

# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

package coolcar/tripservice 

             imports coolcar/proto/gen/go 

             imports coolcar/tripservice: import cycle not allowed

一摸一样为什么我的会循环引入。。。。

package 引入 

trippb "coolcar/proto/gen/go"

main引入

trippb "coolcar/proto/gen/go"
trip "coolcar/tripservice"

为什么老师的不会报循环引入错误?


或者是我这个转化代码的东西有问题?我执行了2个,-go-grpc_out 这种应该怎么写

$protoc -I=. --go_out=paths=source_relative:gen/go trip.proto                      

$protoc -I=. --go-grpc_out=paths=source_relative:gen/go trip.proto


老师执行的

$protoc -I=. --go_out=plugins=grpc,paths=source_relative:gen/go trip.proto   

新版不能用了 。      



正在回答

登陆购买课程后可参与讨论,去登陆

1回答

看他说的应该是 package coolcar/tripservice  import了 coolcar/tripservice

能把coolcar/tripservice的代码贴出来看看吗?


proto生成的文件应该不会import你自己的代码

  • qq_费劲_0 提问者 #1

    这个是我自己的问题,我弄好了,而且现在要这么写了。

    type service struct {

         trippb.UnimplementedTripServiceServer

    }


    // GetTrip gets a trip.

    func (*service) GetTrip(c context.Context, req *trippb.GetTripRequest) (*trippb.GetTripResponse, error) {

          return &trippb.GetTripResponse{

               Id: req.Id,

          }, nil

    }


    现在有个新的问题 ,我看到老师没有在client里进行go mod init,我本地不init就直接报错了。如果init,则

    import trippb "coolcar/proto/gen/go"

    ​在client里又不行了,需要在GOROOT下

    2020-12-18 11:36:19
  • qq_费劲_0 提问者 #2

    老师能不能专门讲一讲gopath与go mod,跨项目如何调用包(比如这里server和client实际上应该在2个项目里),是不是要把proto代码直接考过去一份?我copy过去使用

    import trippb "coolcar/proto/gen/go"

    也是引用不到,我已经copy过来了,为什么项目去GOROOT里去找。

    我在mod.go使用

    replace  trippb => ../server/proto/gen/go

    弄半天也没弄明白。。。编码不难,这些小东西,小细节太难搞了

    2020-12-18 11:44:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师