草庐IT

前缀树的实现

全部标签

struct - 在 Go 中干净地实现结构的多级结构

我是Golang的新手,我正在尝试用底部的字符串列表初始化一个结构体。我希望能够以一种清晰易读的方式访问内部的值,但它没有点击。例如,结构设置如下:typeconfigstruct{//aconfigcanhavemanyreplicasconfigNamestringreplicas[]string}typeinstancestruct{//aninstancecanhavemanyconfigsnamestringconfigs[]config}typeuserstruct{//ausercanhaveuptotwoinstancesinstances[]instance}我正在这

mysql - 如何为使用 MySQL 数据库而不是内存存储的 OpenID 实现自己的接口(interface)

所以我尝试使用Golang的OpenID包,位于此处:https://github.com/yohcop/openid-go在_example中它说它在内存存储中用于存储nonce/discoverycache信息并且它不会释放内存并且我应该使用某种方式实现我自己的版本数据库。我选择的数据库是MySQL,我尝试实现我认为正确的(但不是,没有给我任何编译错误,但在运行时崩溃)我的DiscoveryCache.go是这样的:packageopenidimport("database/sql""log"//"time"_"github.com/go-sql-driver/mysql""git

go - go 的 protobuf 实现是否支持 DynamicMessage?

具体来说,我想序列化一个没有相应.proto文件的Go结构,然后反序列化它(也没有.proto文件)并以编程方式查询和提取其字段。Asearch的golang实现没有发现等效的功能。这是否受支持?(虽然encoding/gob支持这个,但我需要多语言兼容性) 最佳答案 作者说这不受支持:https://github.com/golang/protobuf/issues/106 关于go-go的protobuf实现是否支持DynamicMessage?,我们在StackOverflow上找

json - 如何为从 Go 中的标量派生的类型实现 UnmarshalJSON?

我有一个简单的类型,它在Go中实现了子类型整数常量到字符串的转换,反之亦然。我希望能够自动将JSON中的字符串解码为这种类型的值。我不能,因为UnmarshalJSON没有给我返回或修改标量值的方法。它需要一个结构,其成员由UnmarshalJSON设置。除了内置标量类型,“,string”方法也不起作用。有没有办法为派生的标量类型正确实现UnmarshalJSON?这是我所追求的一个例子。我希望它打印四次“HelloRalph”,但它打印了四次“HelloBob”,因为PersonID没有被更改。packagemainimport("encoding/json""fmt")typeP

go - 如何在 Golang 中为任何模型实现基本的 CRUD 操作?

我正在实现数据库API。我有模型。我需要对每个模型实现CRUD操作。现在,我为每个模型创建了一个单独的GetAllModels函数和Get方法。我如何才能对所有模型执行一次,并在需要时传递一些变量?下面我为每个模型使用的模式:typeCitystruct{Attr1stringAttr2string}typeCountrystruct{Attr1stringAttr2string}funcGetAllCities(db*sqlx.DB)([]*City,error){items:=[]*City{}err:=db.Select(&items,"SELECT*FROMcities")//

go - 无法将实现 Foo 接口(interface)的结构 slice 传递给需要 []Foo 的函数

我正在尝试使用Go中的接口(interface),但我似乎无法将实现某个接口(interface)的结构片段传递给需要接口(interface)片段的函数。它适用于只接受单个对象的函数,但不适用于需要接口(interface)slice的函数。使用下面的代码我得到以下错误:./main.go:27:cannotusefooBar(type[]*FooBar)astype[]FooinargumenttoFooBarBar代码如下:packagemainimport"fmt"typeFoointerface{Bar()bool}typeFooBarstruct{abool}func(f*

Go - 下载前缀下的 S3 文件

我正在尝试下载目录下的文件,而不是直接下载存储桶中的文件。file,err:=os.Create("s3file.csv")downloader:=s3manager.NewDownloader(session.New(&aws.Config{Region:aws.String("us-east-1")}))numBytes,err:=downloader.Download(file,&s3.GetObjectInput{Bucket:aws.String(bucket),Key:aws.String(key),})桶名称-“myBucket”文件夹名称-“myFolder”文件名-“

go - 在结构映射中实现结构集

我有一个结构映射如下:typeSocketIDstringtypeSocketstruct{socket//...idstring}typeChannelstruct{sync.Mutexsocketsmap[SocketID]Socket}我希望能够为其添加子channel,其中每个Socket都属于一个子channel。我尝试将channel结构更改为此:typeSubchannelIDstringtypeChannelstruct{sync.Mutexsocketsmap[SocketID]Socketsubchannelsmap[SubchannelID]map[SocketI

go - 实现具有多个生产者的信号量(使用 goroutines)

这一直是我存在的祸根。typeec2Paramsstruct{sess*session.Sessionregionstring}typecloudwatchParamsstruct{clcloudwatch.CloudWatchidstringmetricstringregionstring}typerequeststruct{ec2ParamscloudwatchParams}//ControlconcurrencyandsyncvarmaxRoutines=128varsemchanboolvarreqchanrequestfuncmain(){sem:=make(chanbool

go - 为 io.Reader 添加前缀

我编写了一个小型服务器,它以io.Reader的形式接收一团数据,添加一个header并将结果流式传输回调用者。我的实现不是特别有效,因为我在内存中缓冲blob的数据,以便我可以计算blob的长度,这需要构成header的一部分。我看过一些io.Pipe()和io.TeeReader的例子,但它们更适合拆分io.Reader分成两部分,并将它们并行写入。我正在处理的blob大约是100KB,所以不是很大,但是如果我的服务器变得繁忙,内存很快就会成为一个问题...有什么想法吗?funcaddHeader(inio.Reader)(outio.Reader,errerror){buf:=n