github.com/integration-system/go-cmp@v0.0.0-20190131081942-ac5582987a2f/cmp/internal/value/pointer_purego.go (about) 1 // Copyright 2018, The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE.md file. 4 5 // +build purego 6 7 package value 8 9 import "reflect" 10 11 // Pointer is an opaque typed pointer and is guaranteed to be comparable. 12 type Pointer struct { 13 p uintptr 14 t reflect.Type 15 } 16 17 // PointerOf returns a Pointer from v, which must be a 18 // reflect.Ptr, reflect.Slice, or reflect.Map. 19 func PointerOf(v reflect.Value) Pointer { 20 // NOTE: Storing a pointer as an uintptr is technically incorrect as it 21 // assumes that the GC implementation does not use a moving collector. 22 return Pointer{v.Pointer(), v.Type()} 23 }