github.com/jxskiss/gopkg@v0.17.3/internal/unsafeheader/unsafeheader.go (about)

     1  // Copyright 2020 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 file.
     4  
     5  // Package unsafeheader contains header declarations for the Go runtime's slice
     6  // and string implementations.
     7  //
     8  // This package allows packages that cannot import "reflect" to use types that
     9  // are tested to be equivalent to reflect.SliceHeader and reflect.StringHeader.
    10  package unsafeheader
    11  
    12  import (
    13  	"unsafe"
    14  )
    15  
    16  // Slice is the runtime representation of a slice.
    17  // It cannot be used safely or portably and its representation may
    18  // change in a later release.
    19  //
    20  // Unlike reflect.SliceHeader, its Data field is sufficient to guarantee the
    21  // data it references will not be garbage collected.
    22  type Slice struct {
    23  	Data unsafe.Pointer
    24  	Len  int
    25  	Cap  int
    26  }
    27  
    28  // String is the runtime representation of a string.
    29  // It cannot be used safely or portably and its representation may
    30  // change in a later release.
    31  //
    32  // Unlike reflect.StringHeader, its Data field is sufficient to guarantee the
    33  // data it references will not be garbage collected.
    34  type String struct {
    35  	Data unsafe.Pointer
    36  	Len  int
    37  }