如何将在函数内部创建的变量作为另一个函数的指针传递

时间:2018-11-03 09:45:21

标签: go

您好,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中实现这一目标?

1 个答案:

答案 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 }},只需传递/返回变量本身即可。

另一方面,pointermap函数中struct的类型)是e类型,需要将其作为指针进行传递,以从功能。

注意main()关键字创建指向该类型的指针。因此,value函数中的new实际上是指向variable e的指针。

去游乐场:https://play.golang.org/p/Jbkm6z5a2Az

希望有帮助。