Доступ к полям структуры байта типа [] с использованием строки - PullRequest
0 голосов
/ 22 января 2020

Есть ли способ получить доступ к структурным полям байта типа [] со строкой?

package main

import "fmt"
import "reflect"

type myStruct struct {
    string1 []byte
    string2 []byte
}

func main() {
    v := myStruct{[]byte("text"), []byte("text2")}
    fmt.Println(getField(&v, "string1"))
}

func getField(v *myStruct, field string) string {
    r := reflect.ValueOf(v)
    f := reflect.Indirect(r).FieldByName(field)
    return f.String()
}

В моем примере выходная строка: <[]uint8 Value>

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

Доступ к свойству структуры по имени

https://socketloop.com/tutorials/golang-how-to-get-struct-field-and-value-by-name

1 Ответ

0 голосов
/ 22 января 2020

package main

import "fmt"
import "reflect"

type myStruct struct {
    string1 []byte
    string2 []byte
}

func main() {
    v := myStruct{[]byte("text"), []byte("text2")}
    fmt.Println(getField(&v, "string1"))
}

func getField(v *myStruct, field string) string {
    r := reflect.ValueOf(v)
    f := reflect.Indirect(r).FieldByName(field)
    return string(f.Bytes())
}
...