Value的文档。字符串解释行为:
我正在尝试从反射中检索字符串值。价值,
我希望value.String()
是okok
,但我得到了<interface {} Value>
。
我错过什么了吗?
package main
import (
"fmt"
"reflect"
)
func dump(args *[]interface{}) {
value := reflect.ValueOf(*args).Index(0)
fmt.Println(value.String())
if value.String() != "okok" {
fmt.Println("miss")
}
}
func main () {
var args []interface{}
args = append(args, "okok")
dump(&args)
}
与其他getter不同,如果v的Kind不是String,它不会恐慌。相反,它返回一个形式为"<T value>"的字符串,其中T是v类型
字符串只是fmt的一个实现。Stringer接口。
如果需要值本身,可以在反射时使用Interface函数。值,然后进行类型断言以获取字符串。示例:
package main
import (
"fmt"
"reflect"
)
func dump(args *[]interface{}) {
value := reflect.ValueOf(*args).Index(0)
str := value.Interface().(string)
fmt.Println(str)
if str != "okok" {
fmt.Println("miss")
}
}
func main() {
var args []interface{}
args = append(args, "okok")
dump(&args)
}
游乐场链接