草庐IT

主程序

全部标签

go - 如何在 echo 中使用自定义上下文正确测试处理程序?

我使用带有自定义上下文的echo框架:ApiContextstruct{echo.ContextUserIDint64UserRolestring}我的中间件:e.Use(func(hecho.HandlerFunc)echo.HandlerFunc{returnfunc(cecho.Context)error{cc:=&common.ApiContext{c,0,""}returnh(cc)}})我的处理程序:func(app*App)listEntity(cecho.Context)error{ctx:=c.(*ApiContext)//error!....}我的测试:funcTe

windows - 我可以在构建 Go 程序的同时静态链接一些 DLL 吗?

如果您在慢速硬盘上运行带有WindowsDLL依赖项的go应用程序,有时会发生Windows加载这些dll的时间过长。如果您将go应用程序放入Windows服务中,您会遇到严重的问题。特别是在慢速硬盘上,这会导致windows服务超时,服务无法启动。是否有可能以某种方式将这些DLL静态链接到go应用程序?加载DLL后一切正常,但需要两次尝试才能使服务运行。但是在第一次失败后,Windows不会再尝试启动该服务,所以我只好自己手动启动该服务。有人有想法吗? 最佳答案 简短的回答是“否”:“DLL”代表“动态链接库”,静态链接DLL是不

docker - 无法在docker中构建golang应用程序

我已经使用示例制作了一个golang应用程序,但是当我设置docker来构建和运行它时,它无法构建并给出错误ERROR:forgoserverCannotstartservicegoserver:b'OCIruntimecreatefailed:container_linux.go:348:startingcontainerprocesscaused"exec:\\"./app\\":stat./app:nosuchfileordirectory":unknown'我的Dockerfile是FROMgolang:1.8WORKDIR/usr/src/appCOPY..RUNCGO_EN

go - 从容器内运行的应用程序使用 Gmail API

我想知道如何从(GKE的)容器内运行的应用程序使用GmailAPI?对于本地开发,我可以运行示例https://developers.google.com/gmail/api/quickstart/go获取代码然后程序保存token,成功发送电子邮件(我已经更改了范围,该示例只有只读)但是我没有运行在K8S中的容器的交互式终端,所以我将凭证和token设置为容器内运行的进程的envvar(我的程序使用了envvar,本地测试发送了邮件成功),它似乎无法联系GmailAPI。确切的错误是:发布https://www.googleapis.com/gmail/v1/users/me/mes

go - 当只读来自 HTTP 处理程序的共享结构时如何防止竞争条件

我需要从struct更新值并返回(只读)而不是从HTTP处理程序写入,以避免出现竞争条件我正在使用sync.Mutex这是一个基本示例:http://play.golang.org/p/21IimsdKP6epackagemainimport("encoding/json""log""net/http""sync""time")typeCounterstruct{countuintflagboolmusync.Mutexquitchanstruct{}timetime.Timewgsync.WaitGroup}func(c*Counter)Start(){c.count=1c.time

go - 将自定义 kubernetes 调度程序部署为 pod

如何将自定义kubernetes调度程序部署为使用golang语言编写的pod? 最佳答案 我相信这是有据可查的heremy-scheduler.yaml类似这样的内容:apiVersion:v1kind:ServiceAccountmetadata:name:my-schedulernamespace:kube-system---kind:ClusterRoleBindingapiVersion:rbac.authorization.k8s.io/v1metadata:name:my-scheduler-as-kube-sched

go - 从 golang 应用程序发送字符串时出现意外的 StrComp 结果

在我下面的代码中,我设置了一个ReadString,它读取用户输入并在exec.Command中传递它。这很好用,但是当我尝试将字符串与vbscript中的硬编码字符串进行比较时(在本例中,我将其与“hello”进行比较),即使用户输入也是“hello”,它也总是失败.如果我只是像这样通过命令行运行vbscript...cscript.exescript.vbshello...然后StrComp会按预期工作,所以我怀疑这是数据类型问题,或者golang应用程序中传递了一些额外的字符。这是ma​​in.go:packagemainimport("fmt""os/exec""bufio""

mongodb - 如何查找和比较官方 MongoDB Go 驱动程序上的日期?

我是mongodb-go-driver的新手,我被卡住了。我在结构中有一个日期,例如:typeEmailstruct{Datestring`json:"date"`}我的mongoDB上和映射到我的结构中的日期的值类似于“02/10/201811:55:20”。我想在我的数据库中找到日期在另一个日期之后的元素,我正在尝试这个,但响应始终为空。initDate,_:=time.Parse("02012006",initialDate)cursor,err:=emails.Find(context.Background(),bson.NewDocument(bson.EC.SubDocum

go - 程序在主程序 block 中发现错误后出现 panic 。 panic : runtime error: invalid memory address or nil pointer dereference

我是golang的新手。在定义位置后trycatch主block中的错误后,我的程序出现panic。我在某处读过,添加defer.close()可能会有所帮助,但编译器再次说你的结构中不存在这样的定义帮助我解决它。typeIPInfostruct{IPstringHostnamestringCitystringCountrystringLocstringOrgstringPostalstring}funcmain(){ip:=getLocalIpv4()location,err:=ForeignIP(ip)iferr!=nil{fmt.Println("errorbro")}fmt.P

go - 将在所有其他处理程序之前运行的中间件

我主要有这个:router:=mux.NewRouter()router.PathPrefix("/").HandlerFunc(func(whttp.ResponseWriter,r*http.Request){glog.Info("before")})router.HandleFunc("/people",person.GetMany).Methods("GET")router.HandleFunc("/people/{id}",person.GetOne).Methods("GET")router.HandleFunc("/people/{id}",person.Create).