aboutsummaryrefslogtreecommitdiff
path: root/src/strings
diff options
context:
space:
mode:
Diffstat (limited to 'src/strings')
-rw-r--r--src/strings/compare.go23
1 files changed, 6 insertions, 17 deletions
diff --git a/src/strings/compare.go b/src/strings/compare.go
index 2bd4a243db..b3c01fddc1 100644
--- a/src/strings/compare.go
+++ b/src/strings/compare.go
@@ -4,25 +4,14 @@
package strings
+import "internal/bytealg"
+
// Compare returns an integer comparing two strings lexicographically.
// The result will be 0 if a == b, -1 if a < b, and +1 if a > b.
//
-// Compare is included only for symmetry with package bytes.
-// It is usually clearer and always faster to use the built-in
-// string comparison operators ==, <, >, and so on.
+// Use Compare when you need to perform a three-way comparison (with
+// slices.SortFunc, for example). It is usually clearer and always faster
+// to use the built-in string comparison operators ==, <, >, and so on.
func Compare(a, b string) int {
- // NOTE(rsc): This function does NOT call the runtime cmpstring function,
- // because we do not want to provide any performance justification for
- // using strings.Compare. Basically no one should use strings.Compare.
- // As the comment above says, it is here only for symmetry with package bytes.
- // If performance is important, the compiler should be changed to recognize
- // the pattern so that all code doing three-way comparisons, not just code
- // using strings.Compare, can benefit.
- if a == b {
- return 0
- }
- if a < b {
- return -1
- }
- return +1
+ return bytealg.CompareString(a, b)
}