38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
// Copyright 2020 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 unsafeheader contains header declarations for the Go runtime's slice
|
|
// and string implementations.
|
|
//
|
|
// This package allows packages that cannot import "reflect" to use types that
|
|
// are tested to be equivalent to reflect.SliceHeader and reflect.StringHeader.
|
|
package unsafeheader
|
|
|
|
import (
|
|
"unsafe"
|
|
)
|
|
|
|
// Slice is the runtime representation of a slice.
|
|
// It cannot be used safely or portably and its representation may
|
|
// change in a later release.
|
|
//
|
|
// Unlike reflect.SliceHeader, its Data field is sufficient to guarantee the
|
|
// data it references will not be garbage collected.
|
|
type Slice struct {
|
|
Data unsafe.Pointer
|
|
Len int
|
|
Cap int
|
|
}
|
|
|
|
// String is the runtime representation of a string.
|
|
// It cannot be used safely or portably and its representation may
|
|
// change in a later release.
|
|
//
|
|
// Unlike reflect.StringHeader, its Data field is sufficient to guarantee the
|
|
// data it references will not be garbage collected.
|
|
type String struct {
|
|
Data unsafe.Pointer
|
|
Len int
|
|
}
|