Как передать переменную, созданную внутри функции, как указатель на другую функцию - PullRequest
0 голосов
/ 03 ноября 2018

Привет новичок Голанга здесь,

Как передать переменную в качестве аргумента-указателя другой функции.

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)
}

Как этого добиться на Голанге?

1 Ответ

0 голосов
/ 03 ноября 2018

Вот как вы можете сделать это в 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 является ссылочным типом (или лучше сказать, что он имеет ссылку на указатель на внутренние структуры данных), поэтому вам не нужно передавать pointer из map, просто передайте / верните сама переменная.

С другой стороны, struct (тип e в функции main()) имеет тип value и должен быть передан как указатель для сохранения обновлений из вызываемой функции.

NOTE : ключевое слово new создает указатель на тип. Таким образом, variable e в функции main() на самом деле является указателем на Type Event.

Игровая площадка Go: https://play.golang.org/p/Jbkm6z5a2Az

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...