strings: move Clone to stringslite

Follow-up CL help package like unique use Clone.

Change-Id: Ie64adf7e1a331f47c3cfe178c368d72fc72493ff
GitHub-Last-Rev: 499476cc4acdf58ecf0fec9f7281bfb90edc7c82
GitHub-Pull-Request: golang/go#67106
Reviewed-on: https://go-review.googlesource.com/c/go/+/581956
Reviewed-by: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
Auto-Submit: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
qiulaidongfeng 2024-05-04 00:40:18 +00:00 committed by Gopher Robot
parent 7994da4cc1
commit ae6af9b3d8
2 changed files with 15 additions and 8 deletions

View File

@ -8,7 +8,10 @@
// Tests for these functions are in the strings package. // Tests for these functions are in the strings package.
package stringslite package stringslite
import "internal/bytealg" import (
"internal/bytealg"
"unsafe"
)
func HasPrefix(s, prefix string) bool { func HasPrefix(s, prefix string) bool {
return len(s) >= len(prefix) && s[0:len(prefix)] == prefix return len(s) >= len(prefix) && s[0:len(prefix)] == prefix
@ -136,3 +139,12 @@ func TrimSuffix(s, suffix string) string {
} }
return s return s
} }
func Clone(s string) string {
if len(s) == 0 {
return ""
}
b := make([]byte, len(s))
copy(b, s)
return unsafe.String(&b[0], len(b))
}

View File

@ -5,7 +5,7 @@
package strings package strings
import ( import (
"unsafe" "internal/stringslite"
) )
// Clone returns a fresh copy of s. // Clone returns a fresh copy of s.
@ -19,10 +19,5 @@ import (
// For strings of length zero the string "" will be returned // For strings of length zero the string "" will be returned
// and no allocation is made. // and no allocation is made.
func Clone(s string) string { func Clone(s string) string {
if len(s) == 0 { return stringslite.Clone(s)
return ""
}
b := make([]byte, len(s))
copy(b, s)
return unsafe.String(&b[0], len(b))
} }