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  }