100 lines
1.9 KiB
Go
Raw Permalink Normal View History

2022-01-26 16:40:50 +08:00
// 辅助工具层
package util
import (
"errors"
"reflect"
"strconv"
"strings"
"unsafe"
)
func InArr(array []int, column int) bool {
i := 0
for i < len(array) {
if array[i] == column {
return true
}
i++
}
return false
}
func InstrArr(array []string, column string) bool {
i := 0
2022-03-08 15:47:38 +08:00
l := len(array)
for i < l {
2022-01-26 16:40:50 +08:00
if array[i] == column {
return true
}
i++
}
return false
}
func InMap(maps map[string]int, column string) (ok bool) {
_, ok = maps[column]
return
}
func RemoveRepeatedElement(arr []string) (newArr []interface{}) {
newArr = make([]interface{}, 0)
for i := 0; i < len(arr); i++ {
repeat := false
for j := i + 1; j < len(arr); j++ {
if arr[i] == arr[j] {
repeat = true
break
}
}
if !repeat {
newArr = append(newArr, arr[i])
}
}
return
}
// b2s converts byte slice to a string without memory allocation.
// See https://groups.google.com/forum/#!msg/Golang-Nuts/ENgbUzYvCuU/90yGx7GUAgAJ .
//
// Note it may break if string and/or slice header will change
// in the future go versions.
func Bytes2str(b []byte) string {
/* #nosec G103 */
return *(*string)(unsafe.Pointer(&b))
}
// s2b converts string to a byte slice without memory allocation.
//
// Note it may break if string and/or slice header will change
// in the future go versions.
func Str2bytes(s string) (b []byte) {
/* #nosec G103 */
bh := (*reflect.SliceHeader)(unsafe.Pointer(&b))
/* #nosec G103 */
sh := (*reflect.StringHeader)(unsafe.Pointer(&s))
bh.Data = sh.Data
bh.Cap = sh.Len
bh.Len = sh.Len
return b
}
// SplitInt 分割字符串并转为INT
func SplitInt(s, sep string) ([]int, error) {
var tmpStr = strings.Split(s, sep)
if len(tmpStr) == 0 {
return nil, errors.New("no split int")
}
var err error
var tmp int
var rlt []int
for i := range tmpStr {
tmp, err = strconv.Atoi(tmpStr[i])
if err != nil {
return nil, err
}
rlt = append(rlt, tmp)
}
return rlt, nil
}