github.com/tursom/GoCollections@v0.3.10/lang/String.go (about)

     1  /*
     2   * Copyright (c) 2022 tursom. All rights reserved.
     3   * Use of this source code is governed by a GPL-3
     4   * license that can be found in the LICENSE file.
     5   */
     6  
     7  package lang
     8  
     9  type String struct {
    10  	string
    11  	hashCode int32
    12  }
    13  
    14  func NewString(str string) String {
    15  	return String{string: str}
    16  }
    17  
    18  func (i String) AsString() string {
    19  	return i.string
    20  }
    21  
    22  func (i String) GoString() string {
    23  	return i.string
    24  }
    25  
    26  func (i String) String() string {
    27  	return i.string
    28  }
    29  
    30  func (i String) AsObject() Object {
    31  	return i
    32  }
    33  
    34  func (i String) Equals(e Object) bool {
    35  	i2, ok := e.(String)
    36  	if !ok {
    37  		return false
    38  	}
    39  	return i == i2
    40  }
    41  
    42  func (i String) ToString() String {
    43  	return i
    44  }
    45  
    46  func (i String) HashCode() int32 {
    47  	if i.hashCode != 0 {
    48  		return i.hashCode
    49  	}
    50  	i.hashCode = HashString(i.string)
    51  	return i.hashCode
    52  }
    53  
    54  func (i String) Compare(t String) int {
    55  	switch {
    56  	case i.string > t.string:
    57  		return 1
    58  	case i == t:
    59  		return 0
    60  	default:
    61  		return -1
    62  	}
    63  }