草庐IT

go - 从包导入路径获取包源的完整路径

目前我有一个类似str:="github.com/pkg/errors"的参数。我需要包的完整路径。目前我是通过使用build.Default.GOPATH+"/src/"+str来实现这一点的。是否有一种原生的非hacky方法来解析导入的完整路径(可以在vendor文件夹等中...)。 最佳答案 使用go/build用于解析目录导入路径的包:p,err:=build.Default.Import("github.com/pkg/errors",".",build.FindOnly)iferr!=nil{//handleerror}

go - 无法将本地包调用到 main

我觉得这可能是一个关于SO的问题,但又出现了。我发现这个简单的任务在Go中非常乏味。请注意,我将GO11MODULES设置为ON,我不确定这是否会影响整个包系统(这不应该是我所假设的)。我有一个名为“users”的包,其中包含一个已编译的ProtocolBuffer(来自.proto文件)。我想将它与许多其他定义一起存储在名为protos的文件夹中。所以我的结构看起来像这样:-main.go-protos-users.go-users.proto-analytics.go-analytics.proto非常简单的结构。在users.go文件中,我定义了packageprotos。在ma

go - 如何从另一个包中访问结构变量?

假设我们有两个不同的包,比方说A和B。我在包A中有一个结构如下:typestruct1struct{XintYint}在包B中,我想访问包A中的struct1中的变量,我该怎么做? 最佳答案 在Go中,如果类型以大写字母开头,则可以将其导出。例如,Struct1已导出并可从包外部访问,但struct1不是,因为它尚未导出。未导出的名称仅在该包内可用。您可以将包A导入包B并访问导出的类型作为A.Struct1:packageBimport("A""fmt")funcCreateAndPrintStruct(){struct1:=A.S

firebase - 在谷歌云功能中找不到包 "firebase.google.com/go"

我正在尝试运行一些示例代码,这些代码使用Firestore服务器中的云函数存储一些随机数据,但是,云函数部署命令拒绝构建命令://PackagepcontainsanHTTPCloudFunction.packagepimport(//...firebase"firebase.google.com/go""log""net/http""os")//Store1StoresdataonFireBasefuncStore1(whttp.ResponseWriter,r*http.Request){//Usetheapplicationdefaultcredentialsctx:=conte

go - 在 Gin Framework 中开发的 REST API 的文件夹结构和包命名约定

我是一名NodeJS/PHP开发人员,并且是Go的初学者。在做了一些研究之后,我为我的RESTAPI项目提出了一个像这样的MVC风格的文件夹结构。.+-bin/+-controllers/+-userController/+-userController.go+-models/+-userModel/+-userModel.go+-main.go因此,我可以让我的代码看起来像这样:import"github.com/gin-gonic/gin"import"controllers/userController"router:=gin.Default()router.GET("/user

golang echo包中间件实现

我正在学习Go并经历了这个例子:echomiddlewareexample.我想深入了解当我们在函数中间件函数Process()中调用next(c)时发生了什么。查看main()我知道我们通过Use()调用。然而,看着echosourcecode我不确定中间件示例中Process()函数中的next(c)调用如何查看上下文的所有中间件函数。一些即使在搜索源代码后我似乎也找不到的东西:(1)echo.HandlerFunc的函数定义在哪里定义?我看到WrapHandler但那是导出的,没有在echo.go中使用,所以我很困惑当next(c)被调用时会发生什么echo.go我们跳转到的源代

go - 如何检查一个包直接依赖/间接依赖另一个包?

如题。我的解决方案是cd$PATH_4_PACKAGE_ONEgolist-f'{{join.Deps"\n"}}'|grep"$PATH_4_PACKAGE_TWO"有更好的解决方案吗?如果我想在一个包列表中查找依赖于另一个包列表中的任何包的包怎么办? 最佳答案 使用gomodules管理你的依赖>goinit#initializegomodules>gomoddownload#downloaddependencies现在你有了go.mod文件,它包含了你的go项目的所有依赖项>catgo.mod|egrep-v"(indirec

go - 有没有更简单的方法来更新本地 Go 包

我正在使用导入到不同项目中的多个包,这些包包括用于我的业务逻辑的自定义适配器,这些适配器由lambda和谷歌云函数以及其他公共(public)包共享。我现在这样做的方式是我出售它们并将它们包含在云功能中。对于可以在虚拟机上编译部署的应用,我都是单独编译的。这对我来说很好,但是,开发这些模块很痛苦。如果我更新包中的方法签名和名称,我必须将我的更改推送到github/gitlab(我的包路径类似于gitlab.com/groupName/projectName/pkg/packageName),然后执行goget-u以更新包。这也并没有真正更新它,有时会卡在旧版本上而不知道如何更新它。我想

docker - Golang 在 Docker 镜像中找不到包

所以,我正在尝试使用包含我的主文件补充代码的不同目录来对一个golang应用程序进行docker化。我正在使用gorilla/mux。目录结构如下所示。$GOPATH/src/github.com/user/server|---Dockerfile|---main.go|---routes/handlers.go|---public/index.gohtml它在我的主机上运行没有问题。问题是,当我尝试部署docker镜像时,它不会运行并在创建后不久退出。我尝试将我的dockerfile中的WORKDIR命令更改为/go/src并将我的所有文件转储到那里,但仍然没有运气。我也试过关于do

go - 从 protobuf 中的其他包导入类型定义

我正在尝试使用一个非常基本的单一操作创建一个grpc服务,该操作是GetDeployment,将命名空间和名称作为输入,并返回Kubernetes部署。问题是我不想为Deployment定义我自己的message,因为它已经存在于officialKubernetesrepository上。.我是grpc的新手,可能不太了解它的工作原理,但我可以将此消息导入我自己的文件,然后我可以编写以下.proto文件吗?syntax="proto3";packageapi;import"google/api/annotations.proto";import"k8s.io/kubernetes/pk