github.com/m10x/go/src@v0.0.0-20220112094212-ba61592315da/strings/compare.go (about)

     1  // Copyright 2015 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package strings
     6  
     7  // Compare returns an integer comparing two strings lexicographically.
     8  // The result will be 0 if a == b, -1 if a < b, and +1 if a > b.
     9  //
    10  // Compare is included only for symmetry with package bytes.
    11  // It is usually clearer and always faster to use the built-in
    12  // string comparison operators ==, <, >, and so on.
    13  func Compare(a, b string) int {
    14  	// NOTE(rsc): This function does NOT call the runtime cmpstring function,
    15  	// because we do not want to provide any performance justification for
    16  	// using strings.Compare. Basically no one should use strings.Compare.
    17  	// As the comment above says, it is here only for symmetry with package bytes.
    18  	// If performance is important, the compiler should be changed to recognize
    19  	// the pattern so that all code doing three-way comparisons, not just code
    20  	// using strings.Compare, can benefit.
    21  	if a == b {
    22  		return 0
    23  	}
    24  	if a < b {
    25  		return -1
    26  	}
    27  	return +1
    28  }