type Value … type flag … const flagKindWidth … const flagKindMask … const flagStickyRO … const flagEmbedRO … const flagIndir … const flagAddr … const flagMethod … const flagMethodShift … const flagRO … func (f flag) kind() Kind { … } func (f flag) ro() flag { … } func (v Value) typ() *abi.Type { … } // pointer returns the underlying pointer represented by v. // v.Kind() must be Pointer, Map, Chan, Func, or UnsafePointer func (v Value) pointer() unsafe.Pointer { … } // packEface converts v to the empty interface. func packEface(v Value) any { … } // unpackEface converts the empty interface i to a Value. func unpackEface(i any) Value { … } type ValueError … func (e *ValueError) Error() string { … } // methodName returns the name of the calling method, // assumed to be two stack frames above. func methodName() string { … } // mustBeExported panics if f records that the value was obtained using // an unexported field. func (f flag) mustBeExported() { … } // mustBeAssignable panics if f records that the value is not assignable, // which is to say that either it was obtained using an unexported field // or it is not addressable. func (f flag) mustBeAssignable() { … } // CanSet reports whether the value of v can be changed. // A Value can be changed only if it is addressable and was not // obtained by the use of unexported struct fields. // If CanSet returns false, calling Set or any type-specific // setter (e.g., SetBool, SetInt) will panic. func (v Value) CanSet() bool { … } // Elem returns the value that the interface v contains // or that the pointer v points to. // It panics if v's Kind is not Interface or Pointer. // It returns the zero Value if v is nil. func (v Value) Elem() Value { … } func valueInterface(v Value) any { … } // IsNil reports whether its argument v is nil. The argument must be // a chan, func, interface, map, pointer, or slice value; if it is // not, IsNil panics. Note that IsNil is not always equivalent to a // regular comparison with nil in Go. For example, if v was created // by calling ValueOf with an uninitialized interface variable i, // i==nil will be true but v.IsNil will panic as v will be the zero // Value. func (v Value) IsNil() bool { … } // IsValid reports whether v represents a value. // It returns false if v is the zero Value. // If IsValid returns false, all other methods except String panic. // Most functions and methods never return an invalid Value. // If one does, its documentation states the conditions explicitly. func (v Value) IsValid() bool { … } // Kind returns v's Kind. // If v is the zero Value (IsValid returns false), Kind returns Invalid. func (v Value) Kind() Kind { … } //go:noescape func chanlen(unsafe.Pointer) int //go:noescape func maplen(unsafe.Pointer) int // Len returns v's length. // It panics if v's Kind is not Array, Chan, Map, Slice, or String. func (v Value) Len() int { … } // NumMethod returns the number of exported methods in the value's method set. func (v Value) numMethod() int { … } // Set assigns x to the value v. // It panics if CanSet returns false. // As in Go, x's value must be assignable to v's type. func (v Value) Set(x Value) { … } // Type returns v's type. func (v Value) Type() Type { … } //go:noescape func unsafe_New(*abi.Type) unsafe.Pointer // ValueOf returns a new Value initialized to the concrete value // stored in the interface i. ValueOf(nil) returns the zero Value. func ValueOf(i any) Value { … } // assignTo returns a value v that can be assigned directly to typ. // It panics if v is not assignable to typ. // For a conversion to an interface type, target is a suggested scratch space to use. func (v Value) assignTo(context string, dst *abi.Type, target unsafe.Pointer) Value { … } // arrayAt returns the i-th element of p, // an array whose elements are eltSize bytes wide. // The array pointed at by p must have at least i+1 elements: // it is invalid (but impossible to check here) to pass i >= len, // because then the result will point outside the array. // whySafe must explain why i < len. (Passing "i < len" is fine; // the benefit is to surface this assumption at the call site.) func arrayAt(p unsafe.Pointer, i int, eltSize uintptr, whySafe string) unsafe.Pointer { … } func ifaceE2I(t *abi.Type, src any, dst unsafe.Pointer) // typedmemmove copies a value of type t to dst from src. // //go:noescape func typedmemmove(t *abi.Type, dst, src unsafe.Pointer) // Dummy annotation marking that the value x escapes, // for use in cases where the reflect code is so clever that // the compiler cannot follow. func escapes(x any) { … } var dummy …