func CacheTimeGenerator() time.Duration {
	// 先设置随机数 - 这里比较重要
	rand.Seed(time.Now().Unix())
	// 再设置缓存时间
	// 10 + [0~20) 分钟的随机时间
	return time.Duration((10 + rand.Int63n(20)) * int64(time.Minute))
}

写项目过程,设置缓存过期时间时候想添加随机数时间过期,用到一个小技巧,随手记录一下

代码如下:

func CacheTimeGenerator() time.Duration {
	// 先设置随机数 - 这里比较重要
	rand.Seed(time.Now().Unix())
	// 再设置缓存时间
	// 10 + [0~20) 分钟的随机时间
	return time.Duration((10 + rand.Int63n(20)) * int64(time.Minute))
}

实际上就是先将分钟转换成int64类型,然后再与随机生成的int64数相乘,平时我们常用的

cacheTime := 10 * time.Minute

是将time.Duration类型的变量乘10倍,但是如果要使用随机数,就需要先转换成int64类型,实际上time.Duration就是int64,但是time还是封装了一下,所以要先转换。