<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                > ### reflect * 類型信息, 元信息 預先定義好的 reflect.TypeOf * 值類型 程序運行過程中動態改變 reflect.ValueOf > ### 例?子一 ~~~ package main import ( "fmt" "reflect" ) func typeJudgment(i interface{}) { reType := reflect.TypeOf(i) kind := reType.Kind() switch kind { case reflect.Int: fmt.Println("Int Type") case reflect.String: fmt.Println("String Type") case reflect.Slice: fmt.Println("Slice Type") case reflect.Ptr: fmt.Println("Ptr Type") } } func main() { number := 5 i := &number typeJudgment(i) } ~~~ > ### 例子2 ~~~ package main import ( "fmt" "reflect" ) type MessageBox struct { Name string `json:"JName" tag1:"TagName"` //tag是結構體的原信息, 可以在運行時通過反射的機制讀取出來 title string `json:"JTitle" tag1:"TagTitle"` Age int `json:"JAge" tag1:"TagAge"` Content string `json:"JContent" tag1:"TagContent"` } func (box MessageBox) Tag(name string) { reType := reflect.TypeOf(box) num := reType.NumField() for i := 0; i < num; i++ { fmt.Println(reType.Field(i).Tag.Get(name)) } } func (box *MessageBox) reflectMsg() { reType := reflect.TypeOf(*box) reValue := reflect.ValueOf(*box) num := reType.NumField() for i := 0; i < num; i++ { fmt.Println(reType.Field(i), "---", reValue.Field(i)) } } func (box *MessageBox) reflectTag(name string) { reType := reflect.TypeOf(box).Elem() num := reType.NumField() for i := 0; i < num; i++ { fmt.Println(reType.Field(i).Tag.Get(name)) } } func (box *MessageBox) reflectMethod() { reValue := reflect.ValueOf(box).Elem() reMethod := reValue.MethodByName("Tag") //T類型的方法 args := []reflect.Value{reflect.ValueOf("json")} reMethod.Call(args) } func main() { mbox := MessageBox{Name: "張三", title: "Hi", Age: 18, Content: "Hello World"} fmt.Println("-----TODO1-----") mbox.reflectMsg() fmt.Println("-----TODO2-----") mbox.reflectTag("tag1") fmt.Println("-----TODO3-----") mbox.reflectMethod() } ~~~ 復制 > ### 相關閱讀 * [反射](http://www.chairis.cn/blog/article/67)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看