草庐IT

map函数

全部标签

Golang 参数函数

我正在尝试使用以下链接中描述的Go参数函数FunctionaloptionsforfriendlyAPIs-但是我收到一个类型错误,我不确定为什么。我在这里添加我的代码以供您查看:SampleCodeHere错误信息是:prog.go:35:18:cannotuseport(typefunc(*Server))astypefunc(*Server)errorinargumenttoNewServer 最佳答案 正如JimB所指出的,签名需要完全匹配,包括返回值。在您的示例代码中,要么有端口返回错误,例如:port:=func(srv

go - map.LoadOrStore 返回的地址值是否与嵌套 map 的输入相同?

我正在做一个嵌套的sync.Map但我想知道如果LoadOrStore返回的值与map情况下的输入相同,我是否可以节省几行代码,我的意思是:varmapasync.MapmapaInterFace,ok:=sessiones.LoadOrStore(userID,mapa)ifok{mapa,ok=mapaInterFace.(sync.Map)if!ok{returnerrors.New("typeassertion")}}如果mapa和LoadOrStore返回值一样,我就可以直接使用,如果不一样就得在前面的代码后面加上,类型断言:mapa,ok=mapaInterFace.(sy

json - 从 json 合并两个 map[string]interface{}

我有两个以这种方式构建的json输入"count:1result:fields"我想在不使用已定义结构的情况下连接我在结果中找到的字段。我尝试了很多方法,但大多数时候结果是关于类型Interface{}或最后一个映射覆盖数据的错误我希望将“结果”以及第一个和第二个map字段合并到输出结果中。oracle,err:=http.Get("http://XXX:8080/XXXX/"+id)iferr!=nil{panic(err)}deferoracle.Body.Close()mysql,err:=http.Get("http://XXX:3000/XXX/"+id)iferr!=nil

go - 调用cgo宏函数

我有一个cgo程序:packagemain//#definesum(a,b)(a)+(b)import"C"funcmain(){print(C.sum(1,2))}应该很直接的打印3,但是编译失败:couldnotdeterminekindofnameforC.sum作为我在cgo中找到的有限文档,经过一些测试,cgo可以使用宏常量,但我如何才能让它使用宏函数/参数? 最佳答案 很简单,你只需要一个包装器://#defineSUM(a,b)(a)+(b)//intsum(inta,intb){//returnSUM(a,b);//

function - 一个函数是如何工作的

本人初学围棋,有以下两个问题很困惑:第一:typeSstruct{afunc()bfunc(iint,jfloat32,kstring)c*func()}funcmain(){s:=S{c:&func(){}}//Error:Cannottaketheaddressof`func(){}`}在这个结构中,c*func()是有效的,但是我如何分配给它?第二:据我所知,函数是一等公民,所以我可以将函数作为参数传递给另一个函数/方法,我也可以声明一个函数变量,所以,函数值是如何工作的,它是实际上是一个函数指针?我看了一些关于对齐和填充的文章,我知道一个接口(interface)值占用16个字

go - 监听调用 Golang 中另一个结构使用的结构函数

这个问题在这里已经有了答案:Howtomockamethodcallofastructintestcaseatgo(2个答案)关闭4年前。所以我是Golang中模拟结构和函数的初学者。我基本上想检查是否已为单元测试目的调用了一个函数。这是代码:typeAstruct{}func(a*A)Foo(){}typeBstruct{a*A}func(b*B)Bar(){a.Foo()}我基本上想检查在调用Bar时是否确实调用了Foo我知道有一些可用于Golang的模拟框架,但在测试现有结构和结构方法时它们非常复杂

unit-testing - 在辅助函数中包装 httptest 方法

在我的处理程序测试中,我多次使用header中带有身份验证token的测试请求服务模式。为了对此进行抽象,并为自己节省大量行数,我编写了以下函数:funcserveTestReq(payloadstring,routestring,methodstring,handlerfuncfunc(whttp.ResponseWriter,r*http.Request),tokenstring){body:=strings.NewReader(payload)req,err:=http.NewRequest(method,route,body)Expect(err).NotTo(HaveOccu

templates - 如何在 Go html/template 中获取 map 元素的结构字段?

我有一个结构任务:typeTaskstruct{cmdstringargs[]stringdescstring}然后我初始化了一个映射,它将上面的Task结构作为一个值,一个string作为键(任务名称)vartaskMap=map[string]Task{"find":Task{cmd:"find",args:[]string{"/tmp/"},desc:"findfilesin/tmpdir",},"grep":Task{cmd:"grep",args:[]string{"foo","/tmp/*","-R"},desc:"grepfilesmatchhavingfoo",},}我

pointers - 在 Golang 中取消引用 map 索引

我目前正在学习Go,我制作了这个简单粗暴的list程序,只是为了修补结构和方法以了解它们的工作原理。在驱动程序文件中,我尝试从Cashier类型的项目映射中调用方法和项目类型。我的方法有指针接收器直接使用结构而不是制作副本。当我运行程序时出现此错误.\driver.go:11:cannotcallpointermethodonf[0].\driver.go:11:无法获取f[0]的地址Inventory.go:packageinventorytypeitemstruct{itemNamestringamountint}typeCashierstruct{itemsmap[int]ite

unit-testing - 在 Go-kit 中为 make 处理函数编写单元测试

我的问题特定于Go-kit以及如何在其中组织代码。我正在尝试为以下功能编写单元测试:funcMakeHandler(svcService,loggerkitlog.Logger)http.Handler{orderHandler:=kithttptransport.NewServer(makeOrderEndpoint(svc),decodeRequest,encodeResponse,)r:=mux.NewRouter()r.Handle("/api/v1/order/",orderHandler).Methods("GET")returnr编写适当的单元测试的正确方法是什么?我见过