0
点赞
收藏
分享

微信扫一扫

go常用的通用函数

本文章向大家介绍Go - 常用函数,主要包括Go - 常用函数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1、 float64保留2位小数

func Decimal(value float64) float64 {
value, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", value), 64)
return value
}

2、 获取两点之间的距离 单位km
lat 纬度 lng经度

func EarthDistance(lat1, lng1, lat2, lng2 float64) float64 {
radius := 6378.137
rad := math.Pi / 180.0
lat1 = lat1 rad
lng1 = lng1
rad
lat2 = lat2 rad
lng2 = lng2
rad
theta := lng2 - lng1
dist := math.Acos(math.Sin(lat1)math.Sin(lat2) + math.Cos(lat1)math.Cos(lat2)math.Cos(theta))
return dist
radius
}

3、 生成订单号
前面17位代表时间精确到毫秒,中间3位代表进程id,最后4位代表序号

func Generate(t time.Time) string {
s := t.Format(timeformat.Continuity)
m := t.UnixNano()/1e6 - t.UnixNano()/1e9*1e3
ms := sup(m, 3)
p := os.Getpid() % 1000
ps := sup(int64(p), 3)
i := atomic.AddInt64(&num, 1)
r := i % 10000
rs := sup(r, 4)
n := fmt.Sprintf("%s%s%s%s", s, ms, ps, rs)
return n
}

4段落引用对长度不足n的数字前面补0

func sup(i int64, n int) string {
m := fmt.Sprintf("%d", i)
for len(m) < n {
m = fmt.Sprintf("0%s", m)
}
return m
}

5、[]byte转为string:

data := [4]byte{0x31, 0x32, 0x33, 0x34}
str := string(data[:])
fmt.Println(str)

输出:
1234

6、golang格式化为当前时间日期:

nowTime := time.Now()
//2006-01-02 15:04:05 此为固定用法,相当于php语言的Y-m-d H:i:s
fmt.Println(nowTime.Format("2006-01-02 15:04:05"))
输出:

 2019-08-18 16:54:57

7、返回当前本地时间戳:

fmt.Println(time.Now().Unix())

8、返回当前本地时间:

fmt.Println(time.Now())
输出:

2019-08-18 16:57:23.3661001 +0800 CST m=+0.013000801

9、给定时间戳和日期字符串转为golang标准时间:

//给定日期字符串
nowTime := time.Now()
//2006-01-02 15:04:05 此为固定用法,相当于php语言的Y-m-d H:i:s
x := nowTime.Format("2006-01-02 15:04:05")
pinfo, _ := time.Parse("2006-01-02 15:04:05", x)
fmt.Println(pinfo)
//给定时间戳
timestamp := time.Now().Unix()
fmt.Println(time.Unix(timestamp, 0))

输出:

2019-08-18 17:00:16 +0000 UTC

2019-08-18 17:00:16 +0800 CST

举报

相关推荐

0 条评论