go語言---reflect

來源:互聯網
上載者:User

標籤:結構體   etc   根據   tail   port   對象   類型   art   type   

go語言---reflect78902953

一.reflect的使用:

import (    "fmt"    "reflect") type Student struct {    Name string    Age  int} func main() {    var x int = 1    student := Student{Name: "zs", Age: 26}     //1.reflect.TypeOf() 傳回值Type類型    fmt.Println("x type: ", reflect.TypeOf(x))    fmt.Println("student type: ", reflect.TypeOf(student))     //2.reflect.ValueOf() 傳回值Value類型    fmt.Println("x value: ", reflect.ValueOf(x))    fmt.Println("student value: ", reflect.ValueOf(student))     //3.value.Kind() 傳回值Kind類型 注意與Type的不同    fmt.Println("x kind: ", reflect.ValueOf(x).Kind())    fmt.Println("student kind: ", reflect.ValueOf(student).Kind())     //4.修改反射對象,修改反射對象的前提條件是其值是可設定的    var a int = 10    v := reflect.ValueOf(&a)    e := v.Elem()    e.SetInt(15)    fmt.Println(e.CanSet()) //根據CanSet()傳回值可確定是否可以設定    fmt.Println(a)          // 根據結果我們可知 a=15     //5.遍曆結構體欄位內容    s := reflect.ValueOf(&student).Elem()    studentType := s.Type()    for i := 0; i < s.NumField(); i++ {        f := s.Field(i)        fmt.Printf("%d %s %s = %v\n", i, studentType.Field(i).Name, f.Type(), f.Interface())    }}

輸出結果:

x type: int
student type: main.Student
x value: 1
student value: {zs 26}
x kind: int
student kind: struct
true
15
0 Name string = zs
1 Age int = 26

go語言---reflect

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.