编辑代码

package main

import (
    "reflect"
    "fmt"
    "encoding/json"
)

type Adult struct {
    ID         string `qson:"Name"`
    Occupation string
    Handsome   bool
    name       bool
}

func testFunc(a interface{}) {
    // 获取 i 的反射变量 Value
    v := reflect.ValueOf(a).Elem()

    // 判断接口变量的类型
    // if v.Kind() != reflect.Ptr {
    //     return
    // }

    fmt.Println(v.Type().PkgPath())

    name, _ := v.Type().FieldByName("name")
    fmt.Printf("name PkgPath: %v\n", name.PkgPath)

    // st := v.Type()
    // for i := 0; i < st.NumField(); i++ {
    //     f := st.Field(i)
    //     fmt.Printf("PkgPath: %v\n", f.PkgPath)
    // }
    
}

func main() {
    aa := Adult{
        ID: "Steve", Occupation: "Clerk", Handsome: true,
    }

    testFunc(&aa)
    mJson, _ := json.Marshal(aa)

    fmt.Println(string(mJson))
}