diff options
author | qiulaidongfeng <2645477756@qq.com> | 2024-05-04 00:40:18 +0000 |
---|---|---|
committer | Gopher Robot <gobot@golang.org> | 2024-05-04 01:23:42 +0000 |
commit | ae6af9b3d8c88c29c81230abbe697cf61e2ae594 (patch) | |
tree | fc80836350caa982386d533fb26e25217b7a0188 | |
parent | 7994da4cc143fa16803bf80188b849457b7d55c3 (diff) | |
download | go-ae6af9b3d8c88c29c81230abbe697cf61e2ae594.tar.gz go-ae6af9b3d8c88c29c81230abbe697cf61e2ae594.zip |
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>
-rw-r--r-- | src/internal/stringslite/strings.go | 14 | ||||
-rw-r--r-- | src/strings/clone.go | 9 |
2 files changed, 15 insertions, 8 deletions
diff --git a/src/internal/stringslite/strings.go b/src/internal/stringslite/strings.go index c0c6e2dce5..4114b86130 100644 --- a/src/internal/stringslite/strings.go +++ b/src/internal/stringslite/strings.go @@ -8,7 +8,10 @@ // Tests for these functions are in the strings package. package stringslite -import "internal/bytealg" +import ( + "internal/bytealg" + "unsafe" +) func HasPrefix(s, prefix string) bool { return len(s) >= len(prefix) && s[0:len(prefix)] == prefix @@ -136,3 +139,12 @@ func TrimSuffix(s, suffix string) string { } 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)) +} diff --git a/src/strings/clone.go b/src/strings/clone.go index d14df11d49..f965b5963a 100644 --- a/src/strings/clone.go +++ b/src/strings/clone.go @@ -5,7 +5,7 @@ package strings import ( - "unsafe" + "internal/stringslite" ) // Clone returns a fresh copy of s. @@ -19,10 +19,5 @@ import ( // For strings of length zero the string "" will be returned // and no allocation is made. 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)) + return stringslite.Clone(s) } |