Reflect를 사용하여 1.8의 unexported 필드에 액세스 할 수 있습니까? 이 더 이상 작동 것 같다 : https://stackoverflow.com/a/17982725/555493golang/unexport되지 않은 필드에 액세스 하시겠습니까?
참고 reflect.DeepEqual
작동하지만 나는 머리 또는 기능의 꼬리를 만들 수 없습니다 (즉, 그것은 안 export 필드에 액세스 할 수 있습니다) 잘. 작동중인 모습을 보여주는 go Playarea가 있습니다 : https://play.golang.org/p/vyEvay6eVG. 의 src 코드는 reflect
패키지의 안 export 기능에 액세스 할 수 있기 때문에
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
}
좋아하지만 어떻게 당신이 유형이되도록 무엇인지 알 수 있습니다 :이 트릭을 주소 지정되지 않은 구조체가 작동하지 않을 경우,하지만이 같은 주소 복사본을 만들 수 있습니다
올바른 방법을 호출 할 수 있습니까? –
@UAvalos 예. 필드의 값에 대해 ['Value.Type()'] (https://golang.org/pkg/reflect/#Value.Type)을 호출하면됩니다. – icza
정말 고통 스러울 정도의 스위치 블록이되지 않을까요? 예 : 사례 Uint, 사례 Uint8, Uint16 등 ... –