草庐IT

传递性

全部标签

arrays - 传递 slice 而不是指针

我在读一本书时偶然发现了有关传递参数的主题。书上说将数组的一部分传递给函数需要24个字节。并且它声明最好传递slice,因为不会复制底层数组。但是传递一个指针不是只需要8个字节吗?书:行动起来开销是否如此之小以至于传递slice是可行的方法?与传递指针相比 最佳答案 复制任何小于缓存行(在大多数常见CPU上通常为128字节)的内容基本上需要相同的时间,因此8字节和24字节之间没有真正的区别。通常更多的时间花在取消引用指针上而不是复制任何东西上小的。由于通过指针操作数组的默认方法是在slice中,因此使用slice而不是指向数组的指针

mongodb - 如何将 exec 函数的标准输出通过管道传递给另一个函数的读取器?

我正在尝试将标准输出从mongodump流式传输到s3。我已经正确掌握了S3任意长度流的语法,但我不明白如何将这两个函数结合起来。我不想在开始上传到S3之前处理整个mongodump命令。这是我目前所拥有的:dumpCmd:=exec.Command("mongodump","--host","","--port","","--archive")dumpCmd.Stdout=os.Stdoutuploader:=s3manager.NewUploader(session.New(&aws.Config{Region:aws.String("us-east-1")}))result,er

go - 无法将结构类型参数传递给另一个包中的函数

我有两个包:offer.go和parser.go。我有一个类型为structData的变量cart。我想将它作为参数传递给另一个包parser中的函数。但是我无法做到这一点。请查看以下内容:offer.gopackageofferimport"go_tests/Parser"typeDatastruct{IdintQuantityintMrpfloat64Discountfloat64}cart:=make(map[int]Data)//carthassomedatainit//passingittoparserParser.BXATP(offer_id,rule.Descriptio

go - 通过 RenderJson 传递多个值

学习“走”。是否可以通过RenderJson方法传递多个值。像这样的东西:returnc.RenderJson(Response{Err:"",Results:{,})我知道您可以像这样传递一个变量/值/结构:returnc.RenderJson(Response{Err:"",Results:)为了实现我的目的,我可以创建一个包含“a_struct”和“string”的结构并将其传递。想知道是否可以通过传递多个值来实现。 最佳答案 根据https://godoc.org/github.com/revel/revel#Control

go - 如何将参数传递给 Go 中的 alice 中间件?

我正在使用justinas/aliceGo中的中间件,我想将参数传递给中间件中使用的函数。例如:middlewareChain:=alice.New(Func1(foostring,foo2string))我该怎么做? 最佳答案 如Motakjuq所述,您不能直接编写将选项作为参数的中间件,因为它们需要具有签名func(http.Handler)http.Handler。您可以做的是创建一个函数来生成您的中间件函数。funcmiddlewareGenerator(foo,foo2string)(mwfunc(http.Handler

go - 在 Go 中将变量传递给 Json 编码器

我有一个包含生成的json网络token的token。我试图将它传递给json编码器以传递给客户端。token:="generatedtoken"json.NewEncoder(res).Encode(`{success:true,message:"Successfullyloggedin."}`) 最佳答案 你可以这样做:token:="sometoken"response:=map[string]interface{}{"success":true,"message":"Successfullyloggedin.","token

go - 为什么 Slices 在传递给 Go 中的函数时内部结构为 "passed by reference"?

packagemainimport"fmt"funcmain(){a:=SomeType{myslice:[]int{1,2,3},decimal:2.33}for_,i:=rangea.myslice{fmt.Println(i)}fmt.Println(a.decimal)addOne(a)for_,i:=rangea.myslice{fmt.Println(i)}fmt.Println(a.decimal)}typeSomeTypestruct{myslice[]intdecimalfloat32}funcaddOne(sSomeType){s.myslice[0]++s.dec

go - 在 golang 中将元数据传递到上下文时出错

我正在处理特定的处理GRPC请求。我正在尝试根据以下代码示例将GRPC请求中的元数据传递到上下文中:https://github.com/go-kit/kit/blob/master/auth/jwt/transport.go#L47.(为了以防万一,contextKey的解释可以引用这里:https://medium.com/@matryer/context-keys-in-go-5312346a868d#.vn10llkse):下面是我的代码:typecontextKeystringfunc(ccontextKey)String()string{returnstring(c)}va

postgresql - 如何将参数传递给用 PL/pgSQL 编写的查询?

我想知道是否可以将参数传递给用PL/pgSQL编写的查询?我试过了,但是失败了pq:got1parametersbutthestatementrequires0packagemainimport("database/sql""fmt""log"_"github.com/lib/pq")funcmain(){db,err:=sql.Open("postgres","host=localhostdbname=dbuser=usersslmode=disablepassword=pw")iferr!=nil{log.Fatal(err)}row:=db.QueryRow(`DO$$BEGIN

go - 将 slice 从 c 传递给 golang 是否会进行内存复制?

我需要将float32(或字节)的一大块从C传递到Go库。代码如下:packagemainimport("C""fmt")//exportPrintIntfuncPrintInt(x[]float32){fmt.Println(x)}funcmain(){}用gobuild-buildmode=c-archivefoo.go编译后我得到了foo.h,这里是它的一部分:typedefGoInt64GoInt;typedefstruct{void*data;GoIntlen;GoIntcap;}GoSlice;#endif/*Endofboilerplatecgoprologue.*/#i