-
我想创建一个接受不同数据类型的方法,但go没有泛型。我必须编写以下重复代码:funcGetRandomSubarrayInt64(candidates[]int64,lengthint)[]int64{result:=make([]int64,0,length)iflen(candidates)==0{returnresult}iflen(candidates)
-
我正在维护一些使用go(golang)、viper和cobra编写的代码。在一行中,它有:rootcmd.persistentflags().string("cfg","","adescription")然后在下面一行rootCmd.PersistentFlags().StringP("output","o",".","Anotherdescription")在这种情况下,string和stringp有什么区别?查看各种教程中的示例用法,似乎有各种方法的p
-
我有一个使用websocket连接和数据库的服务器。有些用户可以通过套接字连接,所以我需要在db中增加他们的“在线”;在他们断开连接的那一刻,我还减少了他们在数据库中的“在线”字段。但为了防止服务器崩溃,我使用在线用户的本地变量副本map[string]int。因此,我需要推迟服务器关闭,直到它完成一个数据库请求,该请求根据我的变量副本减少所有“在线”用户,因为这样套接字连接不会发送默认的“关闭”事件。我找到了一个包github.com/xlab/closer,它可以处理一些系统调用,并且可以在
-
我是golang新手,对上下文以及如何在golang应用程序中使用上下文有些困惑。具体来说,我正在开发cli应用程序,只需要访问mongo,例如。就像-我只是创建单个共享ctx上下文变量,然后将其用于任何需要上下文的操作,这是正确的吗?任何需要上下文的操作都会重新启动5秒计时器吗?或者这是一个共享计时器?packagemainimport("context""log""os""time""go.mongodb.o
-
如何将接口切片设置为结构切片?我定义接口typeifoointerface{//somethingmethods}我定义结构typefoostruct{idint`json:"id"`//somethigfields}我创建了结构工厂,我想将ifoo切片更改为具体结构类型切片funcfoofactory(p*[]ifoo){*p=*(*[]ifoo)(unsafe.pointer(&[]foo{})//here
-
我最近开始学习go,我很困惑为什么它有一种与其他语言(c、c++、c#、java)不同的奇怪的“非传统”语法例如,go中的代码如下:packagemainimport"fmt"funcsum(aint,bint)int{returna+b}funcmain(){numbers:=[4]int{1,2,3,4}for_,n:=rangenumbers{result:=sum(n,2
-
我是一个go初学者,我想知道为什么http.body是go语言中的一个接口?如果您能回答我,我将非常感谢您。
-
我正在尝试解决以下问题,但没有很好的解决方案。我有以下float640.123456789并希望以以下步长进行计数:0.0001所以结果应该是0.123400000我当前的解决方案非常丑陋并且效果不佳:varwaletMoneyfloat64varstepSizefloat64vartmpMoneyfloat64waletMoney=0.123456789stepSize=0.0001tmpMoney=0.0000000loop:=tru
-
我尝试创建一个简单的插入语句并收到错误:pq:“,”处或附近的语法错误txn,err:=db.Begin()stmt,err:=db.Prepare(`INSERTINTOadvertiser_per_day(id,advertiser_name,additional,customer_id,site_id,tracking,counter,day,month,year)VALUES(?,?,?,?,?,?,?,?,?,?)`)如果我将语句放入postgre
-
我有2个go函数:funcsampleFunction(){u,err:=findDog(1)iferr!=nil{//Wecouldn'tfindthedog,printamessage.fmt.Println(err)//Customerrortypes.if_,ok:=err.(*dneError);ok{fmt.Pr
-
给定一个包含字段的结构,我想以符号方式查找特定字段的标记值(不提供字符串形式的字段名称)。typeMyStructstruct{Foostring`tag:"val"`}entity:=MyStruct{}tagVal:=getTag(&entity.Foo)//thefunctionwouldreturn"val"forFoofield我想实现一个gettag函数,该函数将返回给定字段的标记值。
-
我编辑了一些关于优先级队列的官方文档,发现了一个有趣的行为:顺序被打乱了。具体来说,我更新了这一行:item:=heap.pop(&pq).(*item)使用这一行(现在指向实现的方法本身)item:=pq.pop().(*item)现在的结果是:03:香蕉02:苹果04:梨为什么结果不同?如果这两个方法(heap.pop和*pq.pop)执行不同的功能,为什么它们的名称相同?它会导致混乱。packagemainimport("container/
-
我正在尝试将用go编写的旧googleappengine(标准环境)项目迁移到运行时1.12。自2017年底以来我就没有碰过它,从那以后似乎发生了很多变化。我已经能够解决一些问题,但由于有一些外部依赖项,我无法部署代码。尝试部署时控制台输出的相关部分d:\src\go\src\data-axe>goenvgopathd:\src\god:\src\go\src\data-axe>gcloudappdeploy--no-promote...errortype:
-
考虑以下结构typeTeststruct{Astring`t1:"x"`,Bstring`t1:"y"`,}使用反射包,如果我知道t1标签的值为“x”,有什么方法可以得到“a”吗?
-
我的团队使用golang进行编码,我们将所有配置放在conf.json中,有趣的部分如下所示,以及另一个用于json验证的config_schema.json文件。{"host":"192.168.0.34","port":"5678","username":"test_user","password":"random_pass","dbname":"dummy"}我的问题是,我可以定义环境变量,例如$user和$pass并按如下方式使用它们,或者出