在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
package main import ( "fmt" "reflect" ) // 1. reflect 获取变量的类型、值 func reflectFn(x interface{}) { v := reflect.TypeOf(x) v1 := reflect.ValueOf(x) fmt.Println(v, v1, v.Name(), v.Kind()) } func f1() { type myInt int type Person struct { Name string Age int } var x myInt = 34 var p = Person{ Name: "张三", Age: 20, } y := "hello" arr := [3]int{1, 2, 3} sli := []int{4, 5, 6} reflectFn(3) // int 3 int int reflectFn(3.14) // float64 3.14 float64 float64 reflectFn(true) // bool true bool bool reflectFn("golang") // string golang string string reflectFn(x) // main.myInt 34 myInt int reflectFn(p) // main.Person {张三 20} Person struct reflectFn(&y) // *string 0xc000046230 ptr reflectFn(arr) // [3]int [1 2 3] array reflectFn(sli) // []int [4 5 6] slice } // 2. reflect 修改变量的值 func reflectFn1(x interface{}) { v := reflect.ValueOf(x) if v.Elem().Kind() == reflect.String { v.Elem().SetString("world") } } func f2() { x := "hello" reflectFn1(&x) fmt.Println("修改后:", x) // 修改后: world } func main() { f2() }
|
请发表评论