diff options
Diffstat (limited to 'src/strings')
| -rw-r--r-- | src/strings/compare.go | 23 |
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) } |
