【发布时间】:2018-10-12 00:58:06
【问题描述】:
伙计们-我无法理解这一点:
我的代码布局:
src/rtagent/rtagent.go(有主包)
src/simplerouter/simplerouter.go(有包simpleouter)
src/p4/p4runtime.pb.go(有包p4)
rtagent.go:
package main
import (
"fmt"
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
"io"
"log"
"net"
"p4"
"simplerouter"
p4_config "p4/config"
)
simplerouter.go
package simplerouter
import (
"encoding/binary"
"errors"
"fmt"
"p4"
"p4InfoUtils"
"strings"
"unsafe"
)
p4runtime.pb.go
package p4
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import google_protobuf "github.com/golang/protobuf/ptypes/any"
import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
import p4_config "p4/config"
import p41 "p4"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
我收到此错误:
go install rtagent
import cycle not allowed
package rtagent
imports p4
imports p4
有人可以帮忙吗?
【问题讨论】:
-
@aristofanio-garcia,添加了信息
-
不要使用本地导入。死的简单。阅读如何编写 Go 代码和 stick to it word for _word。并停止重命名您的导入。
-
请使用
gofmt。您的代码很难阅读——尤其是由于混合了导入样式。 -
我应该提到,p4runtime.pb.go 是 google protobuf 编译器生成的代码。这是为我从开源项目中获取的 .proto 文件生成的。我还在 .proto 文件中发现了这个问题。基本上,有 3 个 .proto 文件。 1.proto -> 包 a 2.proto,3.proto -> 包 b 1.proto 导入 2.proto,3.proto 导入 1.proto。这会导致循环。我已经针对该项目提交了一个错误以修复此循环。谢谢大家。