Как получить имя переменной строкового указателя с помощью отражения? - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу получить имя имени поля, используя отражение.Я передаю строку в качестве указателя и затем я хочу получить имя переменной в функции.

type FooBar struct {
    foo *string
}

func bar(s *string) {

    var name string

    // TODO: Get name of the field that s is pointing to!

    fmt.Println("Expected string is foo: " + name)
}

func main() {
    f := Foo{"bar"}
    bar(f.s)
}

Я попытался получить значение s с помощью

val := reflect.ValueOf(s)

, а затем яиз моей глубины, чтобы получить имя переменной.

Я должен упомянуть, что в моей структуре есть несколько полей, и я заранее не знаю, какое поле идет речь.

Любая помощьоценили.Спасибо

1 Ответ

0 голосов
/ 12 февраля 2019

Вы не можете сделать это.

Когда вы пишете f.s, все, что у вас есть, это указатель на строку.Информация о том, что некоторые поля в какой-либо структуре имеют это значение в качестве значения, полностью теряется / недоступна.

Я не собираюсь рекомендовать пакет небезопасный: вы должны перепроектировать.

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