草庐IT

go - MarshalToSizedBuffer 用于编译 protobuf 并尝试在其他包中使用它时未定义的结构

我正在使用gogo/protobuf为gRPC调用生成protobuf,但最近由于未正确生成编码方法,它们开始失败。错误看起来像这样:service/v1/service.pb.go:1347:27:m.ListMeta.MarshalToSizedBufferundefined(type*"k8s.io/apimachinery/pkg/apis/meta/v1".ListMetahasnofieldormethodMarshalToSizedBuffer)我已经尝试重新安装go和goenv,使用不同的gvm,并恢复对proto文件的更改。这个问题似乎在我们的proto文件的最后一个

go - 如何从子包访问父包中声明的全局变量? [复制]

Thisquestionalreadyhasanswershere:Sharingagloballydefineddbconnwithmultiplepackages(2个答案)5年前关闭。所以可以说我有以下包装结构----models----------user----------messagemodels包中的文件index.go看起来像这样packagemodelsimport"database/sql"varDB*sql.DB和user包将具有一个文件user.go,看起来像这样packageusertypeUserstruct{IDuint64Usernamestring}f

go - 如何从子包访问父包中声明的全局变量? [复制]

Thisquestionalreadyhasanswershere:Sharingagloballydefineddbconnwithmultiplepackages(2个答案)5年前关闭。所以可以说我有以下包装结构----models----------user----------messagemodels包中的文件index.go看起来像这样packagemodelsimport"database/sql"varDB*sql.DB和user包将具有一个文件user.go,看起来像这样packageusertypeUserstruct{IDuint64Usernamestring}f

go - 从导入的包中跟踪 go routine?

如何获取最后一个(理想情况下)go例程(该应用程序有多个go例程)的堆栈跟踪,该例程发生panic并恢复并仅记录了一条不多的描述性错误消息?不知道哪个套路恢复了。另外,请记住我不会更改任何导入包的代码。这种panic发生在一些创建多个go例程的导入包中,因此我需要一种方法来获取最后恢复的例程的堆栈跟踪,以便找到panic的位置。 最佳答案 简短的回答是:不可能但也有异常(exception)。Golang有一些堆栈控制方法和类型。您可以使用runtime/debug/SetTraceback控制堆栈级别funcSetTracebac

go - 从导入的包中跟踪 go routine?

如何获取最后一个(理想情况下)go例程(该应用程序有多个go例程)的堆栈跟踪,该例程发生panic并恢复并仅记录了一条不多的描述性错误消息?不知道哪个套路恢复了。另外,请记住我不会更改任何导入包的代码。这种panic发生在一些创建多个go例程的导入包中,因此我需要一种方法来获取最后恢复的例程的堆栈跟踪,以便找到panic的位置。 最佳答案 简短的回答是:不可能但也有异常(exception)。Golang有一些堆栈控制方法和类型。您可以使用runtime/debug/SetTraceback控制堆栈级别funcSetTracebac

caching - 在Golang的不同包中获取Redis变量

我正在使用go-redis/redis和go-redis/cache缓存Go对象。import("communication/MQ_pkg""gopkg.in/go-redis/cache.v3""gopkg.in/vmihailenco/msgpack.v2")obj:=&VAR_STRUCT{}Codec.Set(&cache.Item{Key:key,Object:obj,})其中obj是具有go映射(键值对)的结构通过使用上面的代码,我设置了一个键并将值保存到其中。这在包装中很常见。现在我想在不同的包中访问它,比如GetRedis_pkg而无需导入pkg。我有什么办法可以做到这

caching - 在Golang的不同包中获取Redis变量

我正在使用go-redis/redis和go-redis/cache缓存Go对象。import("communication/MQ_pkg""gopkg.in/go-redis/cache.v3""gopkg.in/vmihailenco/msgpack.v2")obj:=&VAR_STRUCT{}Codec.Set(&cache.Item{Key:key,Object:obj,})其中obj是具有go映射(键值对)的结构通过使用上面的代码,我设置了一个键并将值保存到其中。这在包装中很常见。现在我想在不同的包中访问它,比如GetRedis_pkg而无需导入pkg。我有什么办法可以做到这

go - 将对象传递给其他包中的结构

我有一个主函数,我在其中启动一个变量,一个客户端。例如:funcmain(){myClient:=my.MustNewClient("localhost")}现在我想将此客户端传递给另一个包,但出于某种原因我不知道如何执行此操作。我的包裹看起来像这样:packagerestimport("net/http""github.com/Sirupsen/logrus")typeAssetHandlerstruct{mcmy.Client}func(fAssetHandler)ServeHTTP(whttp.ResponseWriter,r*http.Request){logrus.Info(

go - 将对象传递给其他包中的结构

我有一个主函数,我在其中启动一个变量,一个客户端。例如:funcmain(){myClient:=my.MustNewClient("localhost")}现在我想将此客户端传递给另一个包,但出于某种原因我不知道如何执行此操作。我的包裹看起来像这样:packagerestimport("net/http""github.com/Sirupsen/logrus")typeAssetHandlerstruct{mcmy.Client}func(fAssetHandler)ServeHTTP(whttp.ResponseWriter,r*http.Request){logrus.Info(

go - 在go包中获取make文件变量?

我在make文件中有一个变量VERSION,它在编译时使用-ldflags设置二进制版本VERSION=$(strip$(TIMESTAMP))LDFLAGS=-ldflags"-Xmain.buildTime$(BUILD_TIME)-Xmain.buildNumber$(VERSION)"现在我想在一个不是main的包中获取VERSION并打印它。我尝试了很多选项,但无法使其正常工作。我的问题是如何在包中获取它,然后在运行时将其打印到客户端,例如您连接到应用程序版本2.0..?? 最佳答案 目录结构:-main.go-test/