package CommonUtil import ( uuid "github.com/satori/go.uuid" "net" "net/http" "os" "strconv" "strings" "time" ) /** 功能:获取UUID 作者:黄海 时间:2020-02-03 */ func GetUUID() string { u2 := strings.ToUpper(uuid.NewV4().String()) return u2 } /** 功能:从一个数据库的查询返回结果中获取指定字段的IDS 作者:黄海 时间:2020-02-14 */ func Ids(list []map[string]interface{}, key string) []string { var ids []string for i := 0; i < len(list); i++ { switch list[i][key].(type) { case string: ids = append(ids, list[i][key].(string)) break case int64: ids = append(ids, strconv.FormatInt(list[i][key].(int64), 10)) } } return ids } /** 功能:判断是不是合法的日期格式 作者:黄海 时间:2020-03-23 */ func IsDate(date string) bool { _, err := time.Parse("2006-01-02 15:04:05", date) if err != nil { return false } else { return true } } /** 功能:获取蛇形命名的字符串 作者:黄海 时间:2020-01-22 */ func GetSnakeCaseStr(str string) string { array := strings.Split(str, "_") var result string for i := 0; i < len(array); i++ { result = result + strings.ToUpper(array[i][0:1]) + array[i][1:] } return result } /** 功能:将int数据类型转为int64 作者:黄海 时间:2020-02-18 */ func ConvertIntToInt64(i int) int64 { s := strconv.Itoa(i) s64, _ := strconv.ParseInt(s, 10, 64) return s64 } /** 功能:获取当前的时间戳,精确度纳秒 作者:黄海 时间:2020-02-18 */ func GetCurrentTimestamp() int64 { return time.Now().UnixNano() } /** 功能:获取当前的时间字符串 作者:黄海 时间:2020-02-21 */ func GetCurrentTime() string { timeStr := time.Now().Format("2006-01-02 15:04:05") //当前时间的字符串,2006-01-02 15:04:05据说是golang的诞生时间,固定写法 return timeStr } /** 功能:将整数64转为字符串 作者:黄海 时间:2020-04-17 */ func ConvertInt64ToString(i int64) string { s := strconv.FormatInt(i, 10) return s } /** 功能:判断所给路径文件/文件夹是否存在 作者: 黄海 时间:2020-03-26 */ func Exists(path string) bool { _, err := os.Stat(path) //os.Stat获取文件信息 if err != nil { if os.IsExist(err) { return true } return false } return true } /** 功能:获取访问的客户机IP 作者:黄海 时间:2020-03-26 */ func RemoteIp(req *http.Request) string { remoteAddr := req.RemoteAddr if ip := req.Header.Get("Remote_addr"); ip != "" { remoteAddr = ip } else { remoteAddr, _, _ = net.SplitHostPort(remoteAddr) } if remoteAddr == "::1" { remoteAddr = "127.0.0.1" } return remoteAddr } /** 功能:判断某一个值是否含在切片之中 作者:黄海 时间:2020-03-26 */ func InArray(need interface{}, haystack interface{}) bool { switch key := need.(type) { case int: for _, item := range haystack.([]int) { if item == key { return true } } case string: for _, item := range haystack.([]string) { if item == key { return true } } case int64: for _, item := range haystack.([]int64) { if item == key { return true } } case float64: for _, item := range haystack.([]float64) { if item == key { return true } } default: return false } return false } /** 功能:转换MapString 到MapInterface 万恶的map[string]string-->map[string]interface{} 作者:黄海 时间:2020-03-27 */ func ConvertMapStringToMapInterface(_bean map[string]string) map[string]interface{} { n := make(map[string]interface{}) for k, v := range _bean { n[k] = v } return n }