草庐IT

unit-testing - 安装go with homebrew,找不到$GOROOT导致包失败

我用自制软件安装了Go,它通常可以正常工作。按照此处创建serverlessapiinGo的教程进行操作.当我尝试运行单元测试时,出现以下错误:#_/Users/pro/Documents/Code/Go/ServerLessmain_test.go:6:2:cannotfindpackage"github.com/strechr/testify/assert"inanyof:/usr/local/Cellar/go/1.9.2/libexec/src/github.com/strechr/testify/assert(from$GOROOT)/Users/pro/go/src/git

go - 如何在sqlite中插入一个数组?

我有这样的结构:typeFoostruct{bars[]string}由于sqlite3不支持数组数据类型,我们可以将[]string存储为字符串,同时检索返回为字符串片段吗?试图像下面那样实现,但由于类型不匹配而出错。这里需要做什么?编辑:我已经更改了代码并且看起来可以正常工作typestrArray[]stringfunc(strarrStrArray)Value()(driver.Value,error){ifstrarr!=nil{resarr:=strings.Join(strarr,"")returnresarr,nil}returnnil,nil}

go - uint64 类型的溢出错误,如果溢出发生在函数中

为什么下面的代码没有溢出错误?:(uint64类型的溢出bug,如果函数发生溢出)packagemainfuncfoo(iuint64)int{return(1一个简单的bar:=1会导致错误。如果你把bar:=1你得到prog.go:11:9:constant633825300114114700748351602688overflowsint.和bar:=1给出prog.go:11:11:shiftcounttoolarge:512https://play.golang.org/p/0iiUlCiYTDR 最佳答案 根据"Inte

go - 使用http.HandlerFunc的链可以吗?

使用了一段时间的Gohttp包,我发现了一种方便的方法来拆分HTTP请求的目标(端点)的职责,通过http.HandlerFunc的几个链式调用:funcHeaderValidator(hfunc(http.ResponseWriter,*HttpRequest))http.HandlerFunc{returnfunc(whttp.ResponseWriter,req*HttpRequest){...h(w,req)}}现在,处理程序看起来像:router.HandleFunc("/",handler.Log(handler.HeaderValidator(handler.Reques

go - 如何检测被忽略的返回值

给定以下函数:funcCreateDB()(*xorm.Engineorm,error){}我想在该函数中检测它是否是这样调用的:_,err:=CreateDB()...或者像这样:orm,err:=CreateDB()我想检查orm变量并在不需要时关闭连接。这可能吗? 最佳答案 你不能那样做,这也不是一个好的设计。您可以使用反射检查它是从哪个函数调用的,并查看该函数是否正在使用orm变量。https://golang.org/pkg/runtime/#CallerGo使用连接池,如果您担心打开的连接,您可以为每个建立的连接使用超时

go - 计算 Golang 产品中事件的出现次数

我有下面的代码teasers:=[]*models.TeaserCount{}varteasermodels.TeaserCountfor_,product:=rangeProductResponse.Products{added:=falseiflen(product.Campaign.Id)>0{iflen(teasers)>0{for_,teaserCount:=rangeteasers{ifteaserCount.Id==product.Campaign.Id{fmt.Println(teaserCount.Id,teaserCount.Count+1)teaserCount.

go - 如何将 json 解码为 [] 人?

我正在尝试动态设置一个类型为interface{}的字段。在下面的所有情况下,json解码为正确的结构,但在“问题”情况下,json解码为[]interface{}。对于那种情况,我期待[]Person。为什么我得到错误的“问题”类型?packagemainimport("encoding/json""fmt""reflect")typeEmployeesstruct{Indicatorstring`json:"indicator"`Itemsinterface{}`json:"items"`}typePersonstruct{Namestring`json:"name"`}funcm

go - 无法导入 "strings"或 "net/http"

我有这条消息:cannotfindpackage"strings"inanyof:/Users/alexamil/go/src/strings(from$GOROOT)/Users/alexamil/golang_alex/src/strings(from$GOPATH)golang应该安装正确,我有:goversiongo1.8darwin/amd64GOROOT和GOPATH的定义同上。我假设“strings”和“net/http”是核心库,那么既然定义了GOROOT,为什么找不到这些库呢?好的,所以我检查了GOROOT,结果是,我没有看到“strings”和“net/http”,

go - go 如何执行映射/slice 重新分配?

我在theruntime中找不到它,但我想知道在重新分配map或slice时,go如何决定可能需要多少内存。所以当我们看这个时(同样适用于slice):test:=map[int]string{}fori:=0;i首先会分配多少内存,在循环中会发生多少次重新分配?我问这个是因为我想弄清楚在某些情况下应用自定义重新分配策略是否有意义(即使用数组而不是slice并在需要时根据可能满足我的因素增长数组应用程序的要求)。 最佳答案 它的要点是,粗略地说,除了边缘情况,容量通常会增加一倍,而且无法控制。如果需要,您可以实现自己的增长/复制机制

go - 接口(interface)与结构方法

我有接口(interface)代码:packagemainimport("math""fmt")typeCirclestruct{x,y,rfloat64}typeRectanglestruct{x1,y1,x2,y2float64}typeFigureinterface{Area()float64}func(c*Circle)Area()float64{returnmath.Pi*c.r*c.r}func(r*Rectangle)Area()float64{returnmath.Abs(r.x2-r.x1)*math.Abs(r.y2-r.y1)}funcmain(){figures