Package reflect
import "reflect"
type Value
value是go值的反射接口。
零值表示没有值。它的isValid方法返回false,
它的kind方法返回invalid,它的string方法返回“”,所有其他方法都会死机。
func ValueOf
func ValueOf(i interface{}) Value
valueof返回初始化为存储的具体值的新值
在接口i中,valueof(nil)返回零值。
func (Value) IsValid
func (v Value) IsValid() bool
isvalid报告v是否表示值。如果v是
零值。如果isvalid返回false,则除
弦恐慌。大多数函数和方法从不返回无效的
价值。如果有,它的文件会说明
明确地。
int(0)
是一个具体的价值。
ValueOf
返回新的
Value
初始化为接口中存储的具体值
i
.
ValueOf(nil)
返回零
价值
.
IsValid
报告是否
v
表示具体值。它返回
false
如果
V
是零
价值
.
package main
import (
"fmt"
"reflect"
)
func main() {
fmt.Printf("IsValid(nil) %v\n", reflect.ValueOf(nil).IsValid())
fmt.Printf("IsValid(int(0)) %v\n", reflect.ValueOf(int(0)).IsValid())
}
输出:
IsValid(nil) false
IsValid(int(0)) true
The Go Programming Language Specification
The zero value
当通过声明为变量分配存储时
或者调用new,或者在创建新值时,可以通过
复合文本或make调用,并且没有显式初始化
如果变量或值被赋予默认值。每个元素
变量或值的类型设置为零值:
布尔值为false,数值类型为0,“”字符串为,nil为
指针、函数、接口、切片、通道和映射。
包反射
导入“reflect”
func Zero
func Zero(typ Type) Value
零返回一个值,该值表示指定
类型。结果与value结构的零值不同,
根本不代表什么价值。例如,零(类型(42))
返回一个类型为int且值为0的值。返回值为
既不可寻址也不可设置。
go编程语言的零值与
reflect
包裹。注意单词value和value大写的区别。例如,
reflect.Zero
返回A
价值
表示指定类型的零值。结果与
价值
struct
,它根本不表示任何值。