草庐IT

json - 如何从 Golang 中的 json 中提取单个值?

我的代码funcHostStats()(*host.InfoStat,error){infoStat,err:=host.Info()fmt.Printf("AllHostinfo:",infoStat)returninfoStat,err}输出所有主机信息:%!(EXTRAstring={"hostname":"UDAY-PC","uptime":536323,"bootTime":1559911444,"procs":248,"os":"windows","platform":"MicrosoftWindows10Pro","platformFamily":"独立工作站","pla

go - 将单个包/模块拆分为多个(许多)文件会在 go build 上产生未定义的错误。/

我喜欢将我的模块/包拆分成许多文件(例如,一个更大的函数文件和一个耦合的助手文件)。现在,随着模块的增长,它可以拥有许多更大的功能。假设我的模块/包每个包含大约30个文件。几天前开始使用Go时,我对模块模式有点困惑。我有JavaScript(ES6+)背景。经过一些研究,我发现您可以通过运行以下命令构建包含多个文件的包gobuild./...。效果很好,直到我的包包含大约10个文件。突然间,我看到了关于函数未定义的错误。同时,那些在模块/包的src中明确定义的函数(并适本地大写)。我的直觉告诉我这是因为构建顺序。假设我们有2个文件'a.go'和'b.go'。文件'a.go'获得了对文件

go - 如何使用 go 获取 slice 中的单个项目计数?

例如,这是一个slice:[1,2,3,3,4]想要获取单个数据1,2,4的计数并返回count=3。也许删除重复项(包括自身)是一个想法,但没有找到合适的方法。我尝试过的:funcremoveDuplicateItems(){intSlice:=[]int{1,2,3,3,4}fmt.Println(intSlice)keys:=make(map[int]bool)list:=[]int{}for_,entry:=rangeintSlice{if_,value:=keys[entry];!value{keys[entry]=truelist=append(list,entry)}}f

go - 如何通过单个命令修改文档中的两个或多个字段

我正在尝试通过Go(mgoformongo)使用findAndModify向文档内的两个字段添加20个点喜欢change:=mgo.Change{Update:bson.M{"$inc":bson.M{"score":20}},//hereIneedtoadd20tohist_scorealsoReturnNew:true,}collection.Find(bson.M{"_id":id}).Apply(change,&doc)如何通过一个apply更新两个字段score和hist_score? 最佳答案 officialmongo

go - 在单个项目中使用不同版本的 go 包

我正在尝试在一个项目中使用单个go工具的多个版本。例如,这里有一个包裹:https://godoc.org/github.com/docker/docker/pkg,现在这个包有一些目录在旧版本中可用,但在当前版本中不可用,反之亦然。我想同时使用两者,goget始终获取最新版本。如果我切换到旧版本,我会错过最新的目录。知道如何保留这两个版本吗?TIA。 最佳答案 在gopkg.in的帮助下,如果新旧版本的主要版本不同,您可以使用不同的导入路径导入:https://gopkg.in/go-redis/redis.v2https://g

unit-testing - 无法在 GoLand IDE 内的测试套件中运行单个测试?

我正在使用testify'stestsuite支持编写单元测试。这导致我的测试文件有一个TestFooBar(t*testing.T)启动suite.Run而我所有的单独测试都成为我的测试套件的一部分struct方法签名如-func(suite*myTestSuite)TestMyStuff()。我观察到GoLand可以识别所有带有类似于TestFooBar(t*testing.T)签名的方法,并在其旁边放置一个绿色的播放图标。它将允许我单独运行/调试这些方法。但是,作为上述测试套件一部分的所有测试方法都不会被识别,也无法在IDE中单独运行或调试。有什么方法可以告诉GoLandmyTe

Golang - 如何使单个结构与多个结构一起工作?

我想让单个结构与多个结构一起工作。在下面的代码中,第一个查询(rows)应该是单个结构,因为它返回单行,而第二个查询(anotherquery)应该是多个结构,因为它返回5行。目前,我能做的是将rows和anotherquery作为多个结构。下面是server.go:packagemainimport("database/sql""github.com/labstack/echo"_"github.com/lib/pq""html/template""io""log""net/http")typeGallerystruct{Title,Contentstring}typeIdconta

go - 将 slice 中的单个字符串替换为一组字符串

我想要一段字符串,当找到某些字符串时,将它们替换为一组相关的字符串。例如,如果我有这个:[]string{"A","FROM_B_TO_E","F"}在我的方法运行后我想要:[]string{"A","B","C","D","E","F"}我想出了这段代码,问题是,虽然我可以在实际添加之前打印我的to_be_addedslice,但由于某种原因它不起作用。它确实有效,但是如果我更改我的translateRule所以它不会返回一段字符串,而是只返回一个字符串:funcgroupRules(validationRules[]string){forindex,rulename:=rangev

regex - 如何在go中检测单个字符串中正则表达式的所有匹配项

我正在尝试构建一个正则表达式来检测字符串中类似unix时间戳的模式。但是,某些字符串包含多个“unix时间”(如模式),而go的正则表达式仅检测此类模式的第一个实例。我当前的正则表达式:utcRegex,_:=regexp.Compile(^.*\[(\d{7,})\].*)utcCheck:=utcRegex.FindStringSubmatch(字符串)utc:=utcCheck[1]以下是一些示例字符串:正则表达式可以很好地处理这些类型的字符串“11月6日11:21:34[14039]:[1541532094][DEBUG]FOOBAR”正则表达式正确检测到1541532094正

linux - 为什么多个克隆系统调用调用单个 go 子程序?

我创建了一个小示例程序来检查子例程系统调用。packagemainfuncprint(){}funcmain(){goprint()}go子程序的stracesclone(child_stack=0xc000044000,flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM)=27010clone(child_stack=0xc000046000,flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SY