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 }