草庐IT

TIME_SLICE

全部标签

已有字节缓冲区 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

parsing - 更改 time.Time 时区而不重新解析

我正在处理使用错误时区解析的time.Time对象。它们内部有一个UTCtz,但原始数据来自旧版MySQL数据库,该数据库在内部存储带有欧洲/巴黎时区的日期时间。我想在不重新解析的情况下更改时间的内部时区。我尝试了time.In()函数,但它没有解决我的用例,因为它返回另一个时区的同一时间。我的最终解决方案是使用https://golang.org/pkg/time/#ParseInLocation使用正确的位置从原始值重新创建日期。但是,如果可以避免这种情况,那就更好了。有什么想法吗?谢谢。 最佳答案 你能为他们添加固定offes

go - 为什么这两个 time.Time 实例对于 UTC 是相同的而对于另一个位置是不同的?

我希望这两个time.Time实例是相同的。但是,我不确定为什么我得到的比较结果是错误的。packagemainimport("fmt""time")funcmain(){t:=int64(1497029400000)locYangon,_:=time.LoadLocation("Asia/Yangon")dt:=fromEpoch(t).In(locYangon)locYangon2,_:=time.LoadLocation("Asia/Yangon")dt2:=fromEpoch(t).In(locYangon2)fmt.Println(dt2==dt)}funcfromEpoch

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(或其他搜索函数

date - time.AddDate() 不适用于仅解析时间,并将日期设置为今天?

https://play.golang.org/p/O1FWb9O97ldfuncmain(){//constlongForm="Jan2,2006at3:04pm(MST)"t1,_:=time.Parse("03:04:05","12:03:30")fmt.Printf("currentdatetime%v\n",t1)now:=time.Now().UTC()t1.AddDate(now.Year(),int(now.Month()),now.Day())fmt.Printf("currentdatetime%v",t1)}输出当前日期时间0000-01-0112:03:30+0

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