golang 类型断言与反射

前端之家收集整理的这篇文章主要介绍了golang 类型断言与反射前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

session("user")是在另一个页面设置的,存储了一个models.User类型的struct@H_502_1@ var user models.User

u := this.GetSession("user") 获得session user,这里u是一个interface

user = u.(models.User) 类型断言,我断言这个U的类型就是models.User类型的,然后我把他赋值给另一个models.User类型的变量

fmt.Println(user.Id) 这里我就可以访问session user的值了

@H_502_1@

u := this.GetSession("user") //取得一个interface@H_502_1@ v := reflect.ValueOf(u)//反射得到这个变量的类型@H_502_1@ fmt.Println(v.Field(0).Int())//取存储在第0格的值@H_502_1@ fmt.Println(v.Elem().Field(1).String())//取存储在第1格的值@H_502_1@ t := reflect.TypeOf(u)//得到这个变量的类型@H_502_1@ fmt.Println(t)

@H_502_1@
var acc models.Account @H_502_1@ acc.Username = "hello" @H_502_1@ val := reflect.ValueOf(acc).FieldByName("Username") //请取反射中的Username字段 @H_502_1@

@H_502_1@

var acc models.Account@H_502_1@ acc.Username = "hello"@H_502_1@ p := reflect.ValueOf(&acc.Username) //反射取值@H_502_1@ v := p.Elem() //反射对象 p并不是可寻址的,但是并不希望设置p,(实际上)是 *p。为了获得 p 指向的内容调用值上的 Elem 方法,从指针间接指向,然后保存反射值的结果叫做 v@H_502_1@ v.SetString("worldv.SetString("world")//反射给对象赋值@H_502_1@ fmt.Println(acc)

  1. func test(a string) string {
  2. return a
  3. }
  4.  
  5. func main() {
  6. a := "sssssss"
  7. args := []reflect.Value{reflect.ValueOf(a)}//获得一个[]reflect.Value
  8. c := reflect.ValueOf(test).Call(args)//反射函数的值,并调用
  9. fmt.Println(c)
  10. }

@H_502_1@

获得一个反射的类型 v := reflect.ValueOf(user) fmt.Println(v.Type().String())//取得一个反射的类型

猜你在找的Go相关文章