您好,Golang新手,
如何将变量作为指针参数传递给另一个函数。
func B(temp *?, event *Event) {
temp["filla_a"] = event.Data["filla_a"]
return temp
}
func A(event *Event) {
temp := make(map[string]interface{})
temp["po_id"] = event.Data["id"]
temp = B(temp, event)
}
如何在golang中实现这一目标?
答案 0 :(得分:2)
您可以在go
中做到这一点:
package main
import (
"fmt"
)
type Event struct {
Data map[string]string
}
func main() {
e := new(Event)
e.Data = make(map[string]string)
e.Data["id"] = "THE_ID"
e.Data["filla_a"] = "THE_FILLA_A"
A(e)
}
func A(event *Event) {
temp := make(map[string]interface{})
temp["po_id"] = event.Data["id"]
B(temp, event)
fmt.Println(temp)
}
func B(temp map[string]interface{}, event *Event) map[string]interface{}{
temp["filla_a"] = event.Data["filla_a"]
return temp
}
我已将event
假定为struct
,并在程序中声明了相同的内容。
map
中的go
是一个引用类型(或者最好说它具有对内部数据结构的指针引用),因此您不需要传递{{1 }},只需传递/返回变量本身即可。
另一方面,pointer
(map
函数中struct
的类型)是e
类型,需要将其作为指针进行传递,以从功能。
注意:main()
关键字创建指向该类型的指针。因此,value
函数中的new
实际上是指向variable e
的指针。
去游乐场:https://play.golang.org/p/Jbkm6z5a2Az
希望有帮助。