Golang 반사
반사
실행 시 대상 내부 구조를 가져오고 수정하는 능력
함수.
reflect.TypeOf()
reflect.ValueOf()
예제
package basicTest
import (
"fmt"
"reflect"
)
func (u User) GetName() string {
return u.Name
}
func (u User) GetAge() int {
return u.Age
}
type User struct {
Name string
Age int
}
func ReflectLearn() {
user := User{"jihite", 25}
// TypeOf
t := reflect.TypeOf(user)
fmt.Println(t)
// ValueOf
v := reflect.ValueOf(user)
fmt.Println(v)
// Interface
u1 := v.Interface().(User)
fmt.Println(u1)
// type
fmt.Println(t.Kind())
fmt.Println(v.Kind())
//
for i := 0; i < t.NumField(); i = i + 1 {
key := t.Field(i)
value := v.Field(i).Interface()
fmt.Printf(" %d :%s, :%s, :%s
", i, key.Name, key.Type, value)
}
//
for i := 0; i < t.NumMethod(); i = i + 1 {
m := t.Method(i)
fmt.Printf(" %d :%s, :%s
", i, m.Name, m.Type)
}
}
참고 자료
링크
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.