golangの反射-Value

3749 ワード

value.goの関数


func Append(s Value, x ...Value) Value
func AppendSlice(s, t Value) Value
func Indirect(v Value) Value
func MakeChan(typ Type, buffer int) Value
func MakeFunc(typ Type, fn func(args []Value) (results []Value)) Value
func MakeMap(typ Type) Value
func MakeSlice(typ Type, len, cap int) Value
func New(typ Type) Value
func NewAt(typ Type, p unsafe.Pointer) Value
func ValueOf(i interface{}) Value
func Zero(typ Type) Value

value構造の方法


Addr() Value
一般に、構造体フィールドまたはslice要素を取得するために、メソッドを呼び出すためにポインタ受信機が必要である.
Bool() bool
最下位の値を返し、vのkindがboolでないとパニックになります
Bytes() []byte
最下位の値を返します.vの最下位の値がバイトスライスでない場合、パニックが発生します.
			b := []byte{'a', 'b'}

			fmt.Println(reflect.ValueOf(b).Bytes())

		

CanAddr() bool
vがアドレス可能かどうかを確認する
CanSet() bool
値が設定可能かどうかを確認し、アドレス可能なもののみを設定します.
		b := 555

		p:=reflect.ValueOf(&b)

		v := p.Elem()  //  p , p,( )  *p。  p  ,  Elem  , ,  v

		v.SetInt(666)

		fmt.Println(b)

		

Call(in []Value) []Value
反射関数の値を呼び出します.
			func test(a string) string {

			return a

		}

		func main() {

			a := "sssssss"

			args := []reflect.Value{reflect.ValueOf(a)}

			c := reflect.ValueOf(test).Call(args)

			fmt.Println(c)

		}

		

CallSlice(in []Value) []Value
同上
Close()
チャンネルを閉じて、chanでなければパニックになる
Complex() complex128
下位レベルの値を返します.値が複数でない場合、パニックが発生します.
Elem() Value
vに含まれる値を返し、値を設定する際のアドレス操作に使用されることが多い
Field(i int) Value
構造内のインデックスフィールドのValueを返します.
			type A struct {

				a int

				b byte

				c string

			}

			func main() {

				a := A{}

				fmt.Println(reflect.ValueOf(a).Field(0).Int())

			}



		

FieldByIndex(index []int) Value
同上できないスライスを提供します
FieldByName(name string) Value
フィールド名で検索
FieldByNameFunc(match func(string) bool) Value
関数名で検索
Float() float64
最下位の値を返します.値がfloatでない場合、パニックが発生します.
Index(i int) Value
kindがarrayまたはslieceでない場合はパニックになり、その要素をValueに戻します.
Int() int64
最下位の値を返し、intでない場合はパニックになります.
CanInterface() bool
インタフェースが使用できる場合はtrueを返します.
Interface() (i interface{})
Vをinterface{}の現在値として返します
InterfaceData() [2]uintptr
kindがインタフェースでなければパニックになる
IsNil() bool
vがnilの場合はtrueを返します
IsValid() bool
vが値を表す場合はtrueを返します
Kind() Kind
vの種類を返す
Len() int
vの長さを返す
MapIndex(key Value) Value
mapの場合、キーに基づいてキー値のValueが反射されます.
MapKeys() []Value
mapのすべてのkeyを返します
Method(i int) Value
構造のメソッドの値をインデックスで反射
NumMethod() int
統計構造メソッド数
MethodByName(name string) Value
反射メソッドの値はメソッド名に従います
NumField() int
反射構造のフィールド数
OverflowComplex(x complex128) bool
複数を上書き
OverflowFloat(x float64) bool
浮動小数点数を上書き
overflowFloat32(x float64) bool
OverflowInt(x int64) bool
OverflowUint(x uint64) bool
Pointer() uintptr
ポインタの値を反射します.ポインタの整数値を返します
Recv() (x Value, ok bool)
チャンネル用
Send(x Value)
チャンネル用
Set(x Value)
vが設定可能な場合は、vの値を設定します.
SetBool(x bool)
vが設定可能でboolの場合、vの値を設定します.
SetBytes(x []byte)
SetComplex(x complex128)
SetFloat(x float64)
SetInt(x int64)
SetLen(n int)
SetMapIndex(key, val Value)
SetUint(x uint64)
SetPointer(x unsafe.Pointer)
SetString(x string)
Slice(beg, end int) Value
最下位がsliceならは、値を返します.
String() string
ディソンが文字逃げならは、文字を返します.
TryRecv() (x Value, ok bool)
チャンネル
TrySend(x Value) bool
チャンネル、送信用
Type() Type
戻りtype
Uint() uint64
ディソンがUITならはuintを返します
UnsafeAddr() uintptr