草庐IT

admin_init

全部标签

go - init() 未在新包中运行

我已经有一段时间没有使用Go了,我刚刚开始重新处理一个旧项目。我在许多包中都有init()函数,它们工作正常。然而,我刚刚创建了一个新包并添加了一个init()函数,但它不会像其他包一样在初始化期间运行。如果我将init()函数放在以前存在的包中,它运行良好...我相信这是一个简单的问题,但我终究无法解决。我可能做错了什么? 最佳答案 如果您的主程序根本不导入您的新包...它的init()函数将不会被调用。如果只想执行导入包的init()函数,不想使用包的其他内容,应该修改import"foo"导入_"foo"。参见initfunc

go - 在包的 init 函数中初始化变量是否确保 golang 应用程序中的单个实例?

我正在编写布隆过滤器包。在我的包中,我想创建一个X的实例(非导出的),我希望它只作为一个实例存在;无论我的包被导入应用程序多少次。我正在做的一个简单片段是:packagesuperduperbloomfiltervarxXfuncinit(){x=X.New(....)}这是正确的吗? 最佳答案 whichIwanttoexistonlyasasingleinstance;nomatterhowmanytimesmypackageisimportedintoanappThespec说导入的包只初始化一次:Ifapackagehasi

go - 为什么在 init() 中检查 nil

我正在阅读thisarticle在其示例中提供此代码:vartemplatesmap[string]*template.Template//Loadtemplatesonprograminitialisationfuncinit(){iftemplates==nil{templates=make(map[string]*template.Template)}为什么要在init()中检查iftemplates==nil?在执行的这个点上它不会总是一样吗? 最佳答案 没有理由在文章提供的代码中检查nil。还有其他方法来构造代码。选项1:

performance - 在 init 或处理函数中读取模板?

我正在为网站编写一个基本服务器。现在我面临一个(对我来说)困难的性能问题。是不是在init()函数中读取模板文件比较好?//Initializeallpagesofwebsitefuncinit(){indexPageData,err:=ioutil.ReadFile("./tpl/index.tpl")check(err)}还是在http.HandlerFunc中?funcindex(whttp.ResponseWriter,req*http.Request){indexPageData,err:=ioutil.ReadFile("./tpl/index.tpl")check(err

go - 如何在 GoSublime 中禁用 func init() 自动完成功能?

每次我输入关键字int时,这是很常见的......我得到一个关于自动完成的建议funcinit(){}所以每次我写int并按回车时,我都会得到这个函数,然后我必须手动删除它,然后再次重写int并单击左键和向右箭头几次,直到自动完成消失。当你必须在1小时内执行这么多次时,这是一种可怕的体验。我该如何解决? 最佳答案 在您的GoSublime包设置中(如果您还没有将默认值复制给用户),有一行:{"text":"init","title":"funcinit()","value":"funcinit(){\n\t$1\n}"},删除它,我

go - 使用 dep init 时不在任何 GOPATH 中

我正在尝试使用godep安装我的依赖项,但我似乎无法让它工作。当我运行GODEPinit时,出现以下错误determineProjectRoot:/home/cjds/development/core/data-servicenotinany$GOPATH但我的GOPATH肯定包含该路径。这是我的全部路径/home/cjds/development/core/data-servicegoinstall导致以下错误,这可能是问题的根源:nobuildableGosourcefilesin/home/cjds/development/core/data-service但是文件夹结构有一个s

go - dep init -v 执行时挂起

我将从这里的免责声明开始。我在Windows子系统上运行Ubuntu18.0.4。我有一个包,我可以在其中从Windows命令行成功运行“depinit”。我在我的Ubuntu子系统中创建了repo的新克隆(成功克隆,因此没有网络连接问题)并运行“depinit”。这是我遇到问题的时候。Dep只是在拉下一个包后挂起。对depinit的后续调用不会提取更多包。运行“depinit-v”产生以下结果:#>depinit-vGettingdirectdependencies...Checked14directoriesforpackages.Found3directdependencies.

仅当在 Kubernetes 中运行时,Firebase Admin Go SDK 才会出现 x509 证书错误

我目前正在开展一个项目,该项目使用FirebaseAdminGoSDK来处理身份验证和使用实时数据库。当我在本地运行项目时(通过运行gorunmain.go),该项目工作正常。当我通过docker镜像(或GKE,我已经测试过两者)在Minikube中运行它时,每当我尝试进行任何Firestore调用时都会收到此错误:transport:authenticationhandshakefailed:x509:certificatesignedbyunknownauthority这是我在服务器上用来调用数据库的代码://Initializetheappopt:=option.WithCred

for-loop - for循环init语句中的变量声明

又一个golang初学者的问题:我会写:fori:=0;i但是如果我希望i是一个特定的类型,如int64,显然我不应该这样写:forvariint64=0;i令我惊讶的是,我无法在for循环的开始语句中指定类型。我需要写这样的东西:variint64fori=0;i我在这里漏掉了一点吗?有什么解释吗? 最佳答案 for循环的语言规范指出:init语句可以是一个简短的变量声明,它是i:=0形式的赋值,但不是vari=0形式的声明。至于这背后的原因——我猜是语言的简单性。看这里:http://golang.org/ref/spec#Fo

Golang 依赖项在 init() 中注册 sql 驱动程序导致冲突

我有一些Go测试依赖于一些外部代码,这些代码具有注册mysql驱动程序的init()方法。我的代码还需要注册mysql驱动程序,因此我在运行测试时遇到了panic和错误“Registercalledtwicefordrivermysql”。我所依赖的repo似乎有一个vendors目录,其中包含驱动程序(“vendors/github.com/go-sql-driver/mysql”)。似乎当我运行我的测试时,驱动程序中的init()方法被调用并注册了导致冲突的mysql驱动程序。我能看到的最佳选择是将依赖项复制到我自己的vendor目录,并从依赖项的vendor目录中删除mysql驱