// Copyright 2018, The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE.md file.// +build !puregopackagevalueimport("reflect""unsafe")// Pointer is an opaque typed pointer and is guaranteed to be comparable.typePointerstruct{punsafe.Pointertreflect.Type}// PointerOf returns a Pointer from v, which must be a// reflect.Ptr, reflect.Slice, or reflect.Map.funcPointerOf(vreflect.Value)Pointer{// The proper representation of a pointer is unsafe.Pointer,// which is necessary if the GC ever uses a moving collector.returnPointer{unsafe.Pointer(v.Pointer()),v.Type()}}