patch reflect: Zero/Len

This commit is contained in:
xushiwei
2024-06-20 23:40:35 +08:00
parent 28b3f6780c
commit 05031e0979
5 changed files with 505 additions and 1 deletions

View File

@@ -0,0 +1,37 @@
// 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 reflect
import (
"unsafe"
)
// unsafeheaderSlice 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 unsafeheaderSlice struct {
Data unsafe.Pointer
Len int
Cap int
}
// unsafeheaderString 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 unsafeheaderString struct {
Data unsafe.Pointer
Len int
}