草庐IT

func_pointer

全部标签

pointers - 如果参数的类型是 interface{} 你怎么知道你是按指针传递还是按值传递?

给定任何采用interface{}类型参数的函数,我如何知道是否传递带有或不带有&的参数,而无需浏览源代码函数。例如,如果我有一个具有此类型签名的函数:funcfoo(xinterface{},yint)int是否有任何方法可以确定x应该按值还是按指针传递? 最佳答案 这是来自源代码的片段://DecodeElementworkslikeUnmarshalexceptthatittakes//apointertothestartXMLelementtodecodeintov.//Itisusefulwhenaclientreadss

go - 尝试通过 WaitGroup 了解 go func

我有以下代码https://play.golang.org/p/9jPlypO4d-packagemainimport("fmt""sync""time")funcmain(){varwgsync.WaitGroupwg.Add(1)c:=make(chanint)gofunc(){deferwg.Done()for{if我想知道为什么只有一个.打印?不应该是4或5吗? 最佳答案 if将阻塞,直到channel中有东西为止。所以,第一个值是0,它得到它,打印出.,休眠一秒(在goroutine之外它休眠5秒),然后它阻塞直到它获得下

go - 尝试通过 WaitGroup 了解 go func

我有以下代码https://play.golang.org/p/9jPlypO4d-packagemainimport("fmt""sync""time")funcmain(){varwgsync.WaitGroupwg.Add(1)c:=make(chanint)gofunc(){deferwg.Done()for{if我想知道为什么只有一个.打印?不应该是4或5吗? 最佳答案 if将阻塞,直到channel中有东西为止。所以,第一个值是0,它得到它,打印出.,休眠一秒(在goroutine之外它休眠5秒),然后它阻塞直到它获得下

pointers - Golang中Structure变量中Field的访问地址

如何访问GOLANG结构中FIELD的指针或地址。我有整个结构变量的地址或指针,但无法正确访问结构内部字段的地址。到目前为止,我已经尝试过Reflection,但似乎在某个地方坏了。非常感谢任何帮助。 最佳答案 例如,packagemainimport("fmt")typeSstruct{F1,F2int}funcmain(){s:=new(S)f1,f2:=&s.F1,&s.F2fmt.Printf("%p%p%p\n",s,f1,f2)}输出:0x1040a1280x1040a1280x1040a12c

pointers - Golang中Structure变量中Field的访问地址

如何访问GOLANG结构中FIELD的指针或地址。我有整个结构变量的地址或指针,但无法正确访问结构内部字段的地址。到目前为止,我已经尝试过Reflection,但似乎在某个地方坏了。非常感谢任何帮助。 最佳答案 例如,packagemainimport("fmt")typeSstruct{F1,F2int}funcmain(){s:=new(S)f1,f2:=&s.F1,&s.F2fmt.Printf("%p%p%p\n",s,f1,f2)}输出:0x1040a1280x1040a1280x1040a12c

go - 取消 go func()

假设我有一个类似于以下内容的golang函数:conn,_:=ln.Accept()r:=bufio.NewReader(conn)funcwaiter(r*bufio.Reader){r.ReadString('\n')}gowaiter(r)time.Sleep(time.Second)fmt.Println("hello")有没有办法让我取消服务员,这样它就不会挂起等待字符串输入,如果它永远不会出现?问题是bufio读取器正在阻塞,我想让它在自动收报机上等待两秒钟,如果它没有将任何数据读入缓冲区以逃避goroutine。 最佳答案

go - 取消 go func()

假设我有一个类似于以下内容的golang函数:conn,_:=ln.Accept()r:=bufio.NewReader(conn)funcwaiter(r*bufio.Reader){r.ReadString('\n')}gowaiter(r)time.Sleep(time.Second)fmt.Println("hello")有没有办法让我取消服务员,这样它就不会挂起等待字符串输入,如果它永远不会出现?问题是bufio读取器正在阻塞,我想让它在自动收报机上等待两秒钟,如果它没有将任何数据读入缓冲区以逃避goroutine。 最佳答案

pointers - slice 和指针上的范围

我在特定结构的一部分上有以下范围:vart1,t2*time.Timefor_,d:=rangeentries{ifd.EntryType==print{t1=&d.LogTime}ifd.EntryType==saw{t2=&d.LogTime}}在我的示例中,我的结构中有两个对象,我知道它们是不同的。但是,当我用String打印两个时间指针或进行一些计算时,我可以看到两者与第二个具有相同的值。当我将作业更改为tmp:=d.LogTimet1=&tmp我可以进行计算,因为两个指针都指向不同的对象。 最佳答案 应用程序获取变量d的地

pointers - slice 和指针上的范围

我在特定结构的一部分上有以下范围:vart1,t2*time.Timefor_,d:=rangeentries{ifd.EntryType==print{t1=&d.LogTime}ifd.EntryType==saw{t2=&d.LogTime}}在我的示例中,我的结构中有两个对象,我知道它们是不同的。但是,当我用String打印两个时间指针或进行一些计算时,我可以看到两者与第二个具有相同的值。当我将作业更改为tmp:=d.LogTimet1=&tmp我可以进行计算,因为两个指针都指向不同的对象。 最佳答案 应用程序获取变量d的地

pointers - 如何将接口(interface)实现指针转换为接口(interface)指针?

我有一个界面:typeDatastoreinterface{InsertString(strstring)error}我有这个接口(interface)的PostgreSql实现:typeDBstruct{session*sql.DB}func(db*DB)InsertString(strstring)error{returnnil}funcNewDB(user,password,dbNamestring)(*DB,error){dbinfo:=fmt.Sprintf("user=%spassword=%sdbname=%ssslmode=disable",user,password,