|
@@ -4,6 +4,7 @@ import (
|
|
|
"math/rand"
|
|
|
"time"
|
|
|
"unicode/utf8"
|
|
|
+ "unsafe"
|
|
|
)
|
|
|
|
|
|
// StrLen utf8 string length
|
|
@@ -14,19 +15,13 @@ func StrLen(s string) int {
|
|
|
// StrMax verify string's max lenth
|
|
|
func StrMax(s string, max int) bool {
|
|
|
n := utf8.RuneCountInString(s)
|
|
|
- if n <= max {
|
|
|
- return true
|
|
|
- }
|
|
|
- return false
|
|
|
+ return n <= max
|
|
|
}
|
|
|
|
|
|
// StrMin verify string's min lenth
|
|
|
func StrMin(s string, min int) bool {
|
|
|
n := utf8.RuneCountInString(s)
|
|
|
- if n >= min {
|
|
|
- return true
|
|
|
- }
|
|
|
- return false
|
|
|
+ return n >= min
|
|
|
}
|
|
|
|
|
|
// StrRange verify string's Range lenth
|
|
@@ -51,3 +46,18 @@ func Random(n int) string {
|
|
|
}
|
|
|
return string(result)
|
|
|
}
|
|
|
+
|
|
|
+// StringToBytes converts string to byte slice without a memory allocation.
|
|
|
+func StringToBytes(s string) []byte {
|
|
|
+ return *(*[]byte)(unsafe.Pointer(
|
|
|
+ &struct {
|
|
|
+ string
|
|
|
+ Cap int
|
|
|
+ }{s, len(s)},
|
|
|
+ ))
|
|
|
+}
|
|
|
+
|
|
|
+// BytesToString converts byte slice to string without a memory allocation.
|
|
|
+func BytesToString(b []byte) string {
|
|
|
+ return *(*string)(unsafe.Pointer(&b))
|
|
|
+}
|