Вызов допустимого имени из другой переменной - PullRequest
0 голосов
/ 19 июня 2020

Пожалуйста, помогите вызвать переменную из другой переменной.

У меня есть сценарий, который принимает экземпляры EC2 и возвращает переменную «* ec2.Instance».

Я могу распечатать информацию из stati c текст, например:

fmt.Println(instance.InstanceType) // t3.small

Но у меня есть список обязательных полей, например, я не знаю, как Dynami c использовать имя из этого списка:

fields := []string{"InstanceId", "InstanceType", "PrivateIpAddress"}
for i := range fields {
    fmt.Println(fields[i])
    fmt.Println(instance.fields[i]) // Not correct ... :(
}

1 Ответ

0 голосов

Для этого нужно использовать отражение в go.

Ключевой вывод - вам необходимо «проанализировать» возвращаемое значение во время выполнения и получить доступ к свойствам по имени из «отраженной» структуры. Отражение в основном означает анализ объектов во время выполнения.

package main

import (
    "fmt"
    "reflect"
)

type whatever struct {
    cat string
    dog string
    animals int
    something string

}

func main() {

    wantProps := []string{ "cat", "animals"}
    we := whatever{cat: "meow", animals: 22}
    r := reflect.ValueOf(we)
    for _, propName := range wantProps {
        prop := r.FieldByName(propName)
        fmt.Println(propName, prop)
    }
}

Подробнее:

Golang Dynami c доступ к свойству структуры

...