jjzjj

function - 指向函数参数中接口(interface) slice 的指针

我有以下功能:funcread(filePathstring,structure*[]interface){raw,err:=ioutil.ReadFile(filePath)iferr!=nil{fmt.Println(err.Error())os.Exit(1)}json.Unmarshal(raw,structure)}我这样调用它:indexes:=[]Indexread(path+"/"+element+".json",&indexes)但是,当我从函数声明中删除structure*[]interface时,我遇到了奇怪的错误,该错误消失了:./index.verb.go:7

for-loop - 我如何改进代码?

我是编程初学者。我可以在golangfor循环中使用两个元素吗?如果您知道答案或我应该阅读的Material,请帮助我。packagemainimport("fmt")funcmain(){x:=[]int{48,96,86,68,57,82,63,70,37,34,83,27,19,97,9,17,}fora:=0,b:=1;a++,b++{ifx[a]>x[b]{x=append(x[:1],x[1+1:]...)fmt.Println("x[1+1:]x)",x)}else{x=append(x[:0],x[0+1:]...)fmt.Println("x[0+1:]x)",x)}

for-loop - 字符串 slice 的范围不一致

这段代码:import"fmt"import"time"funcmain(){string_slice:=[]string{"a","b","c"}for_,s:=rangestring_slice{gofunc(){time.Sleep(1*time.Second)fmt.Println(s)}()}time.Sleep(3*time.Second)}产生输出“ccc”,而这段代码:import"fmt"funcmain(){string_slice:=[]string{"a","b","c"}for_,s:=rangestring_slice{s="asd"fmt.Println(

arrays - 在 Golang 中定义包含 slice 的数组映射

在Go(golang)中,是否可以定义一个从字符串到数组的映射,并且在每个数组元素中我想存储一个slice。像这样:vardata=make(map[string][2]Slice[]float64)然后我想检索我的数据,像这样:floatValue0=data["string-key"][0][#]floatValue1=data["string-key"][1][#] 最佳答案 data:=map[string][2][]float64{"golang":{[]float64{3.14,3.15},[]float64{3.12,

arrays - 无法对二维数组的列进行 slice "cannot use Sudoku[0:9][0] (type [9]int) as type []int in assignment"

我正在使用9x9二维数组的slice制作一个简单的数独游戏。我仍然刚开始使用Golang并且有一些C++经验。我不断收到错误消息“无法将数独[0:9][0](类型[9]int)用作赋值中的类型[]int”。varrow1[]int=数独[0][0:9]该行正确地获取了二维数组第一行的值并将它们放入row1slice中,但是使用varcol1[]int=Sudoku[0:9][0]会导致上面的错误消息。我能做什么?提前致谢!例如,packagemainimport"fmt"funcmain(){varSudoku[9][9]intfmt.Println(Sudoku)varrow1[]i

go - 从结构 slice 动态创建 map[string]struct 的常用函数

我有两个不同的结构,如下所述AabdB和两个过程函数。有什么方法可以让我编写一个通用函数来为struct生成map[string]struct。此外,有什么方法可以使用给定结构名称的反射来创建相同的对象?typeAstruct{namestring//morefields}typeBstruct{namestring//morefields}funcProcessA(input[]A)map[string]A{output:=make(map[string]A)for_,v:=rangeinput{output[v.name]=v}returnoutput}funcProcessB(i

去 slice - 结束时不要 panic

这个问题在这里已经有了答案:Aslicehasonlyoneelement,namedlist,whycansubslicelist[1:]work?(1个回答)关闭4年前。为什么这段代码有效?具体来说,引用slice范围a[5:]并返回零长度slice的行?长度和容量都报告为5,但引用第六个不存在的元素不会导致panic:packagemainimport("fmt")funcmain(){a:=[]int{1,2,3,4,5}fmt.Println(a,"Len(a)=",len(a),"Cap(a)=",cap(a))fmt.Println(a[4])//Worksasexpec

go - 追加到结构的 slice

我在初始化一个结构片段并添加到它时遇到问题。我正在尝试对以下JSON进行建模,因此我为单个错误创建了名为Error的结构,并创建了一个Errors片段来保存它们。我知道我可以执行errSlice:=[]Err{}但不会显示JSON标记。{"errors":[{"status":"422","source":{"pointer":"/data/attributes/firstName"},"title":"InvalidAttribute","detail":"Firstnamemustcontainatleastthreecharacters."}]}我的尝试:packagemaini

go - 追加时 Go slice 容量如何变化?

这个问题在这里已经有了答案:Howthesliceisenlargedbyappend?Isthecapacityalwaysdoubled?(2个答案)关闭3年前。运行示例TheGoTour在服务器上(目前版本为1.12.7),如果新的slice长度大于当前支持数组的长度,我发现slice的容量加倍到2的下一次幂。如果我在我的机器上运行相同的程序(Windows上的版本1.10.3),slice容量将变为下一个二的倍数。为什么不同?是因为Go版本还是运行时实现?容量变化是确定性的吗?远程服务器上的输出是这样的len=0cap=0[]len=1cap=2[0]len=2cap=2[01

go - 如何检查元素的 slice 并在值存在或不存在时操作另一个 slice

我正在用Go编写一个程序,它应该检查slice的名称。如果名称存在,则在另一个slice中输入“YES”,如果不存在则输入“NO”。名称slice应由用户输入,并在输入值时开始检查。我写了一些代码,但它似乎不起作用。packagemainimport("fmt")funcmain(){varlimitintvarnamesstringfmt.Scanln(&limit)arr:=make([]string,limit)yn:=make([]string,limit)fori:=0;i输出应该是这样的用户输入的值:5史蒂夫约翰下雨珍娜约翰输出:没有没有没有没有是我遇到的错误是一大堆YES