Source File
string.go
Belonging Package
runtime
package runtime
import (
)
const tmpStringBufSize = 32
type tmpBuf [tmpStringBufSize]byte
if == 1 && ( != nil || !stringDataOnStack([])) {
return []
}
, := rawstringtmp(, )
for , := range {
copy(, )
= [len():]
}
return
}
func ( *tmpBuf, [2]string) string {
return concatstrings(, [:])
}
func ( *tmpBuf, [3]string) string {
return concatstrings(, [:])
}
func ( *tmpBuf, [4]string) string {
return concatstrings(, [:])
}
func ( *tmpBuf, [5]string) string {
return concatstrings(, [:])
}
return ""
}
if raceenabled {
racereadrangepc(unsafe.Pointer(),
uintptr(),
getcallerpc(),
funcPC())
}
if msanenabled {
msanread(unsafe.Pointer(), uintptr())
}
if == 1 {
:= unsafe.Pointer(&staticuint64s[*])
if sys.BigEndian {
= add(, 7)
}
stringStructOf(&).str =
stringStructOf(&).len = 1
return
}
var unsafe.Pointer
if != nil && <= len() {
= unsafe.Pointer()
} else {
= mallocgc(uintptr(), nil, false)
}
stringStructOf(&).str =
stringStructOf(&).len =
memmove(, unsafe.Pointer(), uintptr())
return
}
func ( *byte, int) ( string) {
if raceenabled && > 0 {
racereadrangepc(unsafe.Pointer(),
uintptr(),
getcallerpc(),
funcPC())
}
if msanenabled && > 0 {
msanread(unsafe.Pointer(), uintptr())
}
stringStructOf(&).str = unsafe.Pointer()
stringStructOf(&).len =
return
}
func ( *tmpBuf, string) []byte {
var []byte
if != nil && len() <= len() {
* = tmpBuf{}
= [:len()]
} else {
= rawbyteslice(len())
}
copy(, )
return
}
:= 0
for range {
++
}
var []rune
if != nil && <= len() {
* = [tmpStringBufSize]rune{}
= [:]
} else {
= rawruneslice()
}
= 0
for , := range {
[] =
++
}
return
}
func ( *tmpBuf, []rune) string {
if raceenabled && len() > 0 {
racereadrangepc(unsafe.Pointer(&[0]),
uintptr(len())*unsafe.Sizeof([0]),
getcallerpc(),
funcPC())
}
if msanenabled && len() > 0 {
msanread(unsafe.Pointer(&[0]), uintptr(len())*unsafe.Sizeof([0]))
}
var [4]byte
:= 0
for , := range {
+= encoderune([:], )
}
, := rawstringtmp(, +3)
:= 0
if >= {
break
}
+= encoderune([:], )
}
return [:]
}
type stringStruct struct {
str unsafe.Pointer
len int
}
type stringStructDWARF struct {
str *byte
len int
}
func ( *string) *stringStruct {
return (*stringStruct)(unsafe.Pointer())
}
func ( *[4]byte, int64) ( string) {
var []byte
if != nil {
= [:]
= slicebytetostringtmp(&[0], len())
} else {
, = rawstring(4)
}
if int64(rune()) != {
= runeError
}
:= encoderune(, rune())
return [:]
}
func ( *byte) string {
:= findnull()
if == 0 {
return ""
}
, := rawstring()
memmove(unsafe.Pointer(&[0]), unsafe.Pointer(), uintptr())
return
}
func ( *byte, int) string {
if == 0 {
return ""
}
, := rawstring()
memmove(unsafe.Pointer(&[0]), unsafe.Pointer(), uintptr())
return
}
func (, string) bool {
return len() >= len() && [:len()] ==
}
const (
maxUint = ^uint(0)
maxInt = int(maxUint >> 1)
)
const = 4096
:= 0
if := bytealg.IndexByteString(, 0); != -1 {
return +
if >= {
break
}
+= encoderune([:], rune([]))
}
[] = 0 // for luck
return [:]
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |