jjzjj

Golang slice 大小不断增加

我正在学习go并正在构建一个小的示例控制台应用程序,但遇到了一个我无法解决的问题。我正在构建的应用程序模拟一辆公共(public)汽车正常运行,接送乘客。我遇到的问题是函数(letPassengersOff())似乎在增加乘客数量。我已经复制了下面的乐趣,但您可以在这里找到应用程序的其余部分:BusRoute谁能看出我做错了什么?funcletPassengersOff(){departing,remaining:=[]Passengerfmt.Println("Numberofpassengers:",len(b.Passengers))for_,value:=rangeb.Pass

arrays - slice 的嵌套映射在函数内部不起作用

我正在尝试创建一个slice图,并且我有以下有效的代码。StringMap:=map[string][]string{"numbers":[]string{"1","2"},"programs":[]string{"red"},}但是如果我把它放在这个函数中:funcRenderContents(responseWriterhttp.ResponseWriter){varpageModel.Page=Model.Page{TemplateFilename:"template.html",StringMap:=map[string][]string{"numbers":[]string{

已有字节缓冲区 slice 时的 Golang Reader 接口(interface)实现

我正在尝试为将文件[]byte上传到云端并从云端下载文件[]byte的程序实现读写方法。到目前为止,我的读取方法卡在一个无限读取循环中,只读取相同的32KiB。我正在使用我打开的文件作为输入以满足io.Copy。我确定我的实现不知何故很乱func(sS3File)Read(buffer[]byte)(int,error){ifs.mode!="rb"{fmt.Println("Wrongmodeused")}buf,err:=s.DownBufferInfo(s.path)iferr!=nil{fmt.Println("Errorfromgettingbufferforreader.a

go - 在 slice 中保存对函数的引用

在这个程序中,我保存了对在slice中返回特定实现的函数的引用。在SpeakAll中,我调用每个函数以获取其对应的对象并在其上调用Speak。问题:无法遍历数组并获取输出GoPlaygroundpackagemainimport"fmt"typeIAnimalinterface{Speak()string}typeCatstruct{}func(cCat)Speak()string{return"meow!"}typeDogstruct{}func(dDog)Speak()string{return"woof!"}typeZoostruct{Animals[]func()IAnimal

go - 函数返回指向 struct slice 的指针只返回 1

我有一个基本上看起来像这样的函数:func(db*datastoreDB)GetAllUsers(ctxcontext.Context)(*[]User,error){query:=datastore.NewQuery("User")varusers[]User_,err:=db.client.GetAll(ctx,query,&users)return&users,nil}结构:typeUserstruct{usernamestringpassword[]byte}现在,如果我尝试调用users,err:=models.DB.GetAllUsers(ctx)log.Println(u

loops - Golang和结构数组的结构

我为电影和电视节目定义了以下结构:typeMoviestruct{IDstring`json:"id"`Viewersint`json:"count"`}typeTVShowstruct{IDstring`json:"id"`Seasonint`json:"season"`Episodeint`json:"episode"`Viewersint`json:"count"`}然后,我具有以下结构,其中包含按国家/地区显示的几部电影或电视节目:typeMoviesstruct{PenultimateMonthmap[string][]MovieLastMonthmap[string][]M

mongodb - 有没有办法通过 Find() 获取 slice ?

现在我在做:sess:=mongodb.DB("mybase").C("mycollection")varusers[]struct{Usernamestring`bson:"username"`}err=sess.Find(nil).Select(bson.M{"username":1,"_id":0}).All(&users)iferr!=nil{fmt.Println(err)}varmyUsers[]stringfor_,user:=rangeusers{myUsers=append(myUsers,user.Username)}有没有更有效的方法直接从Find(或其他搜索函数

go - 将值附加到 slice 时,值与原始值不同

考虑这段代码:packagemainimport("fmt")funcmain(){fmt.Println(Part(11))}funcPart(nint)string{enumResult:=[][]int{}enum(n,n,[]int{},&enumResult)fmt.Println(enumResult)fmt.Println(40,enumResult[40])return""}varabcint=0funcenum(nint,topint,pre[]int,result*[][]int){variintifn>top{i=top}else{i=n}for;i>0;i--{

go - slice of slice 中的接口(interface)转换

我写了这个示例代码(https://play.golang.org/p/u_oz5X4aU07):funcmain(){varobjinterface{}json.Unmarshal([]byte("[[1,2],[3,4]]"),&obj)val:=obj.([][]int)fmt.Println(val)}为什么会出现错误:interfaceconversion:interface{}is[]interface{},not[][]int有没有一种简单的方法可以将obj转换成一片slice?此代码有效,但我想要更紧凑和高效的代码。varval[][]float64forr,v:=ra

pointers - 将指针 slice 分配给它们实现的接口(interface) slice

这个问题在这里已经有了答案:Typeconvertingslicesofinterfaces(9个回答)关闭8个月前。我需要了解golang的行为。想象一下,我们有一个带有某种方法的接口(interface),并且我们有一个实现该方法的类型。如果我们将指向类型的指针分配给定义为接口(interface)的变量,golang允许我们这样做。但是当我们尝试将指针slice分配给定义为包含接口(interface)slice的变量时,golang会出现panic...谁能解释一下为什么?Hereisanexample