go/src/runtime/type.go

type nameOff

type typeOff

type textOff

type _type

type rtype

func (t rtype) string() string {}

func (t rtype) uncommon() *uncommontype {}

func (t rtype) name() string {}

// pkgpath returns the path of the package where t was defined, if
// available. This is not the same as the reflect package's PkgPath
// method, in that it returns the package path for struct and interface
// types, not just named types.
func (t rtype) pkgpath() string {}

var reflectOffs

func reflectOffsLock() {}

func reflectOffsUnlock() {}

func resolveNameOff(ptrInModule unsafe.Pointer, off nameOff) name {}

func (t rtype) nameOff(off nameOff) name {}

func resolveTypeOff(ptrInModule unsafe.Pointer, off typeOff) *_type {}

func (t rtype) typeOff(off typeOff) *_type {}

func (t rtype) textOff(off textOff) unsafe.Pointer {}

type uncommontype

type interfacetype

type arraytype

type chantype

type slicetype

type functype

type ptrtype

type name

type structtype

func pkgPath(n name) string {}

// typelinksinit scans the types from extra modules and builds the
// moduledata typemap used to de-duplicate type pointers.
func typelinksinit() {}

type _typePair

func toRType(t *abi.Type) rtype {}

// typesEqual reports whether two types are equal.
//
// Everywhere in the runtime and reflect packages, it is assumed that
// there is exactly one *_type per Go type, so that pointer equality
// can be used to test if types are equal. There is one place that
// breaks this assumption: buildmode=shared. In this case a type can
// appear as two different pieces of memory. This is hidden from the
// runtime and reflect package by the per-module typemap built in
// typelinksinit. It uses typesEqual to map types from later modules
// back into earlier ones.
//
// Only typelinksinit needs this function.
func typesEqual(t, v *_type, seen map[_typePair]struct{}