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@ 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)
@H_502_1@
获得一个反射的类型 v := reflect.ValueOf(user) fmt.Println(v.Type().String())//取得一个反射的类型