Golang 반사

3366 단어

반사


실행 시 대상 내부 구조를 가져오고 수정하는 능력

함수.


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) } }

참고 자료


링크

좋은 웹페이지 즐겨찾기