summaryrefslogtreecommitdiff
path: root/libgo/go/strings/compare.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/strings/compare.go')
-rw-r--r--libgo/go/strings/compare.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/libgo/go/strings/compare.go b/libgo/go/strings/compare.go
new file mode 100644
index 00000000000..b84dddea74e
--- /dev/null
+++ b/libgo/go/strings/compare.go
@@ -0,0 +1,28 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package strings
+
+// 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.
+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
+}