草庐IT

使用映射将 YAML 解码到结构中

我正在尝试将YAML文件解码为包含两个映射的结构(使用go-yaml)。YAML文件:'Include':-'string1'-'string2''Exclude':-'string3'-'string4'结构:typePathsstruct{Includemap[string]struct{}Excludemap[string]struct{}}尝试解码的函数的简化版本(即删除了错误处理等):import"gopkg.in/yaml.v2"funcgetYamlPaths(filenamestring)(Paths,error){loadedPaths:=Paths{Include:

database - Golang 代码的运行速度真的比 PHP 中的相同代码慢

Golang新手,昨天我开始使用Golang并编写了一些实际用PHP编写的代码。我只是想看看性能上的差异。我在PHP中做完全相同的事情,响应在http请求中完全相同,但Golang的执行速度非常慢,即使在编译之后也是如此。我试图了解我在Golang中使用的哪些东西不应该使用,以及我如何才能提高这段代码的性能。我知道遍历映射很慢,但是PHP使用散列映射来实现多维数组。我可以保证我使用的sql查询是从PHP粘贴的完全相同的副本,机器相同,并且两个代码中的循环数相同。packagemainimport("database/sql""encoding/json""fmt"_"github.co

Golang 将列表对象转换为字符串

我有两个结构:typeAstruct{BankCodestring`json:"bankCode"`BankNamestring`json:"bankName"`}和:typeBstruct{Aextrastring`json:"extra"`}还有两片:listsA[]A和listsB[]B我想从listA和listB获取bankCodes。bankcodes只包含bankcodes。它是一个[]string使用两个函数会很简单。funcgetBankCodes(data[]A)[]string{res:=make([]string,len(data))fori:=0;i如何使用一个

arrays - 如何在 Golang 中将字符串转换为 map[int]string

我在将字符串转换为map时遇到了问题。我有来自url的下一个数据map[start:0draw:1length:10_:1475090278299search[value]:search[regex]:falseorder[0][dir]:ascorder[0][column]:0columns[0][orderable]:truecolumns[0][searchable]:truecolumns[0][search][value]:columns[0][search][regex]:falsecolumns[0][data]:namecolumns[0][name]:columns

elasticsearch - Golang : Using ElasticSearch library called Goes, 如何为 bool should 方法编写可执行代码?

我正在使用gos库(https://github.com/OwnLocal/goes),它是Golang中ElasticSearch的包装器。在ElasticSearch查询中,我们可以这样运行:{"query":{"match":{"user_id_1":"438018"}}}而且有效。对于使用gos的golang,你可以像这样运行它:varquery=map[string]interface{}{"query":map[string]interface{}{"match":map[string]interface{}{"user_id_1":"438018",},},}这是我的问题

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")//

http - 多线程Go for HTTP get

我在一个API中使用Go来获取我所在城市的公交车频率,但是当我尝试使HTTPGet访问许多URL时,我有点卡在了线程上。如果没有并发,程序需要超过16分钟才能完成1500个url调用以获取HTTP状态代码,我试图使用并发,但在阅读了很多帖子后我不明白goroutines是如何工作的......想法是制作一个函数并更改请求的数量,如下所示:gogetBusPostStatus(600,800)但我完全坚持...代码如下:packagemainimport("fmt""net/http""strconv""time")variint=0varconvStrstringvarmessage=

go - 存储所有符合相同接口(interface)的类型的构造函数集合

我正在制作一个应用程序,它需要一组规则来运行作业。该应用程序提供了用几种不同语言之一表达规则的可能性。因此,我定义了一个实时规则引擎的接口(interface),它提供了应用程序查询当前规则集所需的方法。根据源语言的不同,在这个接口(interface)的后面会有一种不同类型的引擎。现在我想根据规则文件的扩展名实例化一个规则引擎。但是我遇到了一些我很难克服的错误。让我首先提供这个简化的骨架:packagemain//////TheinterfacetypeRulesEngineinterface{SomeRuleEvaluator(string)bool}//////Animpleme

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”文件名-“

pointers - Go 中的临时地址?

处理这种情况最干净的方法是什么:funca()string{/*doesn'tmatter*/}b*string=&a()这会产生错误:cannottaketheaddressofa()我的理解是,如果它的地址被占用,Go会自动将局部变量提升到堆中。这里很明显是要取返回值的地址。处理此问题的惯用方法是什么? 最佳答案 地址运算符返回指向具有“家”的东西的指针,例如一个变量。您的代码中表达式的值是“无家可归”。如果你真的需要一个*string,你必须分两步完成:tmp:=a();b:=&tmp请注意,虽然*string有完全有效的用例