| 12345678910111213141516171819202122232425262728293031323334 |
- // reflect2.go
- package main
- import (
- "fmt"
- "reflect"
- )
- func main() {
- var x float64 = 3.4
- v := reflect.ValueOf(x)
- // setting a value:
- // v.SetFloat(3.1415) // Error: will panic: reflect.Value.SetFloat using unaddressable value
- fmt.Println("settability of v:", v.CanSet())
- v = reflect.ValueOf(&x) // Note: take the address of x.
- fmt.Println("type of v:", v.Type())
- fmt.Println("settability of v:", v.CanSet())
- v = v.Elem()
- fmt.Println("The Elem of v is: ", v)
- fmt.Println("settability of v:", v.CanSet())
- v.SetFloat(3.1415) // this works!
- fmt.Println(v.Interface())
- fmt.Println(v)
- }
- /* Output:
- settability of v: false
- type of v: *float64
- settability of v: false
- The Elem of v is: <float64 Value>
- settability of v: true
- 3.1415
- <float64 Value>
- */
|