Source File
export.go
Belonging Package
github.com/google/go-cmp/cmp
// Copyright 2017, 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 file.package cmpimport ()// retrieveUnexportedField uses unsafe to forcibly retrieve any field from// a struct such that the value has read-write permissions.//// The parent struct, v, must be addressable, while f must be a StructField// describing the field to retrieve. If addr is false,// then the returned value will be shallowed copied to be non-addressable.func ( reflect.Value, reflect.StructField, bool) reflect.Value {:= reflect.NewAt(.Type, unsafe.Pointer(uintptr(unsafe.Pointer(.UnsafeAddr()))+.Offset)).Elem()if ! {// A field is addressable if and only if the struct is addressable.// If the original parent value was not addressable, shallow copy the// value to make it non-addressable to avoid leaking an implementation// detail of how forcibly exporting a field works.if .Kind() == reflect.Interface && .IsNil() {return reflect.Zero(.Type)}return reflect.ValueOf(.Interface()).Convert(.Type)}return}
The pages are generated with Golds v0.7.6. (GOOS=linux GOARCH=amd64)