草庐IT

Golang 排序接口(interface) slice

我用Golang编写了一个CLI工具来包装API,我喜欢它的组合如此简单。现在我想合并另一个具有不同JSON结构的API来获得相似的值。我为要实现的结构创建了一个接口(interface),但我不太了解类型转换在Golang中的工作原理。这是我整理的一个例子:我有一个公开了一些方法的公共(public)接口(interface)VehicletypeVehicleinterface{Manufacturer()stringModel()stringYear()intColor()stringString()string}我还想对实现此接口(interface)的所有结构进行排序,因此我

string - 如何在 slice 中写入函数的结果

在示例中,一切正常。但是他们不使用变量a并立即显示它https://play.golang.org/p/O0XwtQJRej但是我有一个问题:packagemainimport("fmt""strings")funcmain(){str:="fulltext"varslice[]stringslice=strings.Split(str,"")fmt.Printf("anwer:",slice)}答案中有多余的字符,例如%!(EXTRA[]string=附言我知道我需要使用append向slice添加元素,但现在我不明白如何在此处应用append。向上:现在我有了答案:anwer:%!

function - 高语 : Return 2d slice for any type

我知道如何创建这样的二维slice。vardata[]intdata=make([]int,w*h)v:=make([][]int,h)fori:=0;i由于这非常冗长,而且我将创建其中的许多内容,因此我决定将其重构为一个函数。funccreate2dSlice(w,hint)[][]int{vardata[]intdata=make([]int,w*h)v:=make([][]int,h)fori:=0;i这只适用于整数。在golang中有什么方法可以对重用相同代码的其他类型执行此操作?我来自C++,我希望能够做这样的事情。create2dSlice(w,h)

go - 如何同步用于并发初始化 slice 的 go 例程?

我正在尝试使用go例程以并发方式初始化一组项目。然而,Go奇怪的内存行为阻止我这样做,即使我使用了建议的原语(channel)。下面是最小的复制:funcTestSliceInit(t*testing.T){toInit:=make([]int,10)syncLock:=make(chanbool)fori:=rangetoInit{gofunc(){toInit[i]=i;syncLock代码应该将toInit数组初始化为0-9,但它没有。相反,会产生错误。我在Goland2018.1上试过这段代码 最佳答案 因为代码是并发运行的

json - 我如何在 slice 内对 slice 进行 json 解码

我正在尝试解码一些非常丑陋的json,但不知道如何解码。我有:packagemainimport"fmt"import"encoding/json"typePublicKeystruct{IDint`json:"id"`Keystring`json:"key"`MyData[]struct{IDstring`json:"id"`Valueint`json:"value"`}}funcmain(){b:=`[{"id":1,"key":"my_key"},[{"id":"some_id","value":12},{"id":"anorther_id","value":13}]]`varp

pointers - 混淆函数参数中的指针、 slice 和接口(interface){}

我一直在阅读有关Go如何通过指针与值将参数传递给函数的信息。我一直在阅读有关接口(interface)类型的信息。而且我一直在篡改反射包。但显然,由于这里的示例代码,我仍然不明白它是如何工作的:packagemainimport("reflect""fmt")typeBusinessstruct{Namestring}funcDoSomething(b[]Business){variinterface{}i=&bv:=reflect.ValueOf(i).Elem()forc:=0;c当我运行这段代码时,它将打印一个包含10个业务结构的列表,其Business.Name为Pizza0到

mysql - go-gorm mysql "unsupported type []string, a slice of string"

我使用gorm,并尝试创建到mysql的事务。我有一个结构typeGamestruct{Images[]string}game:=Game{Images:[]string{"1.png","2.png"}}db:=Database()tx:=db.Begin()iferr:=tx.Create(&game).Error;err!=nil{tx.Rollback()returnerrors.New("Cannotaddgame")}tx.Commit()但是我收到错误(sql:convertingargument$1type:unsupportedtype[]string,asliceo

go - 删除 slice 中的元素并返回删除的元素和剩余的元素

我只想要一个函数,它具有结构类型“t”的一部分,返回返回我正在寻找的元素和剩余的元素,我尝试使用部分解决方案来解决我的问题,如下所示:Deleteelementinaslice但是由于一个奇怪的原因,它没有按预期工作https://play.golang.org/p/tvJwkF5c_tjfuncmain(){varnames=[]string{"john","julio","pepito","carlos"}fmt.Println(getMe("john",names))}funcgetMe(mestring,names[]string)(string,[]string,bool){

go - 获取 slice 的头部或除头部以外的所有内容

如何在Go模板中获取slice的头部或尾部?我想使用什么:{{template"breadcrumb"$urlArray[0]$urlArray[1:]}} 最佳答案 可以通过index获取slice元素:{{$length:=len$urlArray}}first-{{index$urlArray0}}但最后一个更难,因为你必须获得索引$length-1,并且模板中不允许算术运算。但是你可以将go函数暴露给模板:funcfirst(s[]string)string{iflen(s)==0{return""}returns[0]}f

go - golang slice 中哪种类型的大小为零?

golangslice中哪个类型的大小为零?我在看golangslice的源码时,发现有一段代码et.size==0。所以我想知道哪个type的size是0?funcgrowslice(et*_type,oldslice,capint)slice{...ifet.size==0{ifcap 最佳答案 TheGoProgrammingLanguageSpecificationSizeandalignmentguaranteesAstructorarraytypehassizezeroifitcontainsnofields(orele