Existe-t-il un moyen d'utiliser Reflect pour accéder aux champs non exportés dans go 1.8? Cela ne semble fonctionner: https://stackoverflow.com/a/17982725/555493Accéder aux champs non exportés dans golang/refléter?
Notez que reflect.DeepEqual
fonctionne très bien (qui est, il peut accéder aux champs non exportées) mais je ne peux ni queue ni tête de cette fonction. Voici une zone de jeu qui le montre en action: https://play.golang.org/p/vyEvay6eVG. Le code src est inférieure
import (
"fmt"
"reflect"
)
type Foo struct {
private string
}
func main() {
x := Foo{"hello"}
y := Foo{"goodbye"}
z := Foo{"hello"}
fmt.Println(reflect.DeepEqual(x,y)) //false
fmt.Println(reflect.DeepEqual(x,z)) //true
}
Ok, mais comment pouvez-vous savoir ce que le type est ainsi que vous pouvez appeler la bonne méthode? –
@UAvalos E.g. en appelant ['Value.Type()'] (https://golang.org/pkg/reflect/#Value.Type) (sur la valeur du champ). – icza
ne se traduirait-il pas par un bloc de commutation vraiment douloureux? ex: cas Uint, cas Uint8, Uint16, etc ... –