<dl id="opymh"></dl>

<div id="opymh"></div>
      <div id="opymh"><tr id="opymh"></tr></div>

        <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

        <em id="opymh"></em>

        <em id="opymh"><ol id="opymh"></ol></em>

              golang的反射引发出类型问题;

              0 0 golang
              hellosweet
              hellosweet

              声望值:40 0人

              2018-10-15 15:06:26 提问

              关注 0关注

              收藏 0收藏, 554浏览

              1. 今天看the-way-to-go,关于反射赋值时候一个疑问(11.10.2章节)
              2. 代码如下
              package main
              
              import (
                  "fmt"
                  "reflect"
              )
              
              func main() {
                  var x float64 = 3.14
                  v := reflect.ValueOf(x)    
                  fmt.Println("settability of v:", v.CanSet())
                  fmt.Println("v.type:", v.Type())  //这一行输出v.type: float64
                  v = reflect.ValueOf(&x)
                  fmt.Println("type of v:", v.Type()) //这一行输出type of v: *float64
                  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)
                  fmt.Println(v.Interface())
                  fmt.Println(v)
              }

              其中 v := reflect.ValueOf(x) 中v的类型是float64,为何在v = reflect.ValueOf(&x)之后v的类型是*float64后还能用=赋值,这样前后类型不一样为什么不会出错?

              请先 登录 后评论

              2个回答

              • 00ffgfgf6973声望 2018-10-15 16:02

                v的实际类型是reflect.Value,不是float64也不是*float64...注意区别v.(type)和v.Type()
                请先 登录 后评论
              • xyf76声望 2018-10-15 16:02

                reflect.ValueOf的返回值是reflect.Value类型, reflect.Value类型是个普通的struct源码在$GOROOT/src/reflect/value.go里面,定义这个结构用来描述go中所有的值
                请先 登录 后评论
              悬赏追问
              10
              • 10
              • 20
              • 50
              • 100
              • 200
              • 输入数值
              发布追问
              极速飞艇好假
              <dl id="opymh"></dl>

              <div id="opymh"></div>
                  <div id="opymh"><tr id="opymh"></tr></div>

                    <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                    <em id="opymh"></em>

                    <em id="opymh"><ol id="opymh"></ol></em>

                          <dl id="opymh"></dl>

                          <div id="opymh"></div>
                              <div id="opymh"><tr id="opymh"></tr></div>

                                <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                                <em id="opymh"></em>

                                <em id="opymh"><ol id="opymh"></ol></em>