- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有这个包https://github.com/open-telemetry/opentelemetry-proto其中仅包含 protobuf 定义。要生成 golang 代码,必须输入:
make gen-go
并且 go build 失败并显示以下消息:
build opentel: cannot load github.com/open-telemetry/opentelemetry-proto/gen/go/common/v1: module github.com/open-telemetry/opentelemetry-proto@latest found (v0.11.0), but does not contain package github.com/open-telemetry/opentelemetry-proto/gen/go/common/v
我尝试将 go.mod 文件中的一个路径替换为另一个路径,但显然我不太擅长。我怎样才能让它发挥作用?
我已将这些生成的文件复制到
$GOPATH/src/opentelemetry-proto/gen/go
我应该在主包内的导入语句中放入什么?
最佳答案
Go 源代码的生成方式存在一些挑战。我认为存储库作者的目标是跨语言以及 Go 的 GOPATH 和 GO MODULES 用例保持一致......所以,是的,对他们和我们来说都是粗糙的.
这是一个(!?)解决方案:
假设您位于 /path/to/somedir
中,并且它包含同一级别的 opentelemetry-proto
和“my-module”的克隆,即:
.
├── my-module
└── opentelemetry-proto
make gen-go
像以前一样。这应该创建 ./opentelemetry-proto/gen
在./opentelemetry-proto/gen/go/github.com/open-telemetry/opentelemetry-proto
中转到go mod init github.com/open-telemetry/opentelemetry-proto
:
.
├── gen
└── go.mod
my-module
中,go mod init my-module
然后:go.mod
:
module my-module
go 1.17
require (
github.com/open-telemetry/opentelemetry-proto v0.11.0
)
replace (
github.com/open-telemetry/opentelemetry-proto => ../opentelemetry-proto/gen/go/github.com/open-telemetry/opentelemetry-proto
NOTE With
GOPATH
paths down to packages are required (they're not using Go Modules) and so, if we were usingGOPATH
, we couldGOPATH=${GOPATH}:${PROTO_GEN_GO_DIR}/github.com/open-telemetry/opentelemetry-proto
然后,例如
main.go
:
package main
import (
v1 "github.com/open-telemetry/opentelemetry-proto/gen/go/collector/metrics/v1"
)
func main() {
// E.g.
_ = v1.ExportMetricsServiceRequest{}
}
说明:
make gen-go
不会创建模块,但我们可以创建一个。
该模块是从 gen/go
下的路径隐含的,即 github.com/open-telemetry/opentelemetry-proto
然后,在我们的项目中,我们可以replace
来提供它的本地路径。该路径是克隆的路径,然后返回到我们新创建的 go.mod
。
导入路径是从模块(即过于复杂的替换路径)到我们感兴趣的包的路径。
NOTE Commonly protobuf imports are pb but I've used
v1
.
我会做什么:
我认为生成代码的模块应该与其存储库相匹配。如果 opentelemetry-proto
是我的,我会在不使用 gen/go
因为这将 - IMO - 简化一切:
github.com/open-telemetry/opentelemetry-proto => ../opentelemetry-proto
还有:
import (
v1 "github.com/open-telemetry/opentelemetry-proto/collector/metrics/v1"
)
关于戈朗。替换不是真正的 go 包的模块路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69517065/
我想知道将任何数据发送到模板(html/template 包)的真正方法是什么?我的代码如下: var templates = template.Must(template.ParseFiles(
我有密码 if config.Process.TraceLog != "" { f, err := os.OpenFile(config.Process.TraceLog, os.O_RDWR
大家好。我是 GO 的新手,需要一些帮助。我有一个具有这种结构的项目 但让我们假设我的逻辑包 中有 100500 个项目。如果我只需要为特定包导入一个或两个文件怎么办?我可以这样做还是只能导入完整包?
package main import ( "fmt" ) func main() { var square int box := [4]int{1, -2, 3, 4}
我想在每个范围循环后递增一个变量。但是,似乎无法使用标准(for init; condition; post {})语法,因此我想知道为什么。这是我正在尝试做的事情 for item := r
这个问题在这里已经有了答案: Creating a Constant Type and Restricting the Type's Values (2 个答案) 关闭 6 年前。 什么是只允许一组
我试过编译我的简单程序: func main(){fmt.Printf("Hello")} 根据文档在我的 PC 上使用 64 位 Debian Linux 到 MIPS 架构 https://gol
为什么不在 channel 上发送并阻止执行?我怎样才能使这个星座工作,以便我可以向 MoneyDive() 发送信号并继续执行? package main import ( "fmt" )
这是来自 Golang.org http://golang.org/pkg/sort/ // By is the type of a "less" function that defines the
class type User { name string } 是否可以在运行时添加字段age? 最佳答案 不,这是不可能的。 即使使用 Java 或 C++ 语法代替有效的 Go 也不行。
当我编译下面的程序时 func myPrint(v ...interface{}) { fmt.Println("Hello", v...) } func main() { m
有一个问题,这里发生了什么? forever := make(chan bool) log.Printf(" [*] Waiting for messages. To exit press CTRL+
当我运行我的 GoLang 程序时,它抛出了这个异常: packages/go-lang/1.3/pkg/tool/linux_amd64/6l: readsym 不同步 它是否来 self 的 am
我时常会遇到诸如零垃圾或有效使用内存等概念。例如在知名包的特性部分 httprouter您可以看到以下内容: Zero Garbage: The matching and dispatching pr
最近读了golang规范,遇到了一些有趣的操作符: & bitwise AND integers | bitwise OR integers
有这个包https://github.com/open-telemetry/opentelemetry-proto其中仅包含 protobuf 定义。要生成 golang 代码,必须输入: make
有这个包https://github.com/open-telemetry/opentelemetry-proto其中仅包含 protobuf 定义。要生成 golang 代码,必须输入: make
我正在使用下面的代码连接到 grpc 服务器,clientConn 对象用于所有后续的 rpc 调用。 maxDelay 设置为 5 秒。现在由于服务器出现问题,它没有响应 grpc 调用。所以我的客
初始数据: rawdata := []int{17, 23, 100500} 结果: result := convert(rawdata) expected := "1723100500" 我应该用
我想用我的智能手机操作我的窗帘。现在每次我改变手机的位置时都有一个方法 func main() { OnUpdate(func(tPos int) { wc(tPos,cPos)
我是一名优秀的程序员,十分优秀!