
想要封装一个随机数函数生成 类似于 ts 的这样
function random(min?: number, max?: number): number { min = min === undefined ? Number.MIN_SAFE_INTEGER : min; max = max === undefined ? Number.MAX_SAFE_INTEGER : max; return Math.floor(Math.random() * (max - min + 1)) + min; } 想用上 go 的泛型 但是底层随机数都是 rand.类型 一下子不知道怎么写了 试了下 interface + switch(.type) 感觉不是很优雅 有没有 go 大佬 指点一下
1 gogogo2000 2023 年 1 月 6 日 func r(min int, max int) int { return rand.Intn(max-min+1) + min } |
2 lyonbrown4ddd OP @gogogo2000 如果我想单函数同时支持 int float 等数字类型呢 |
3 yaott2020 2023 年 1 月 6 日 via Android 那就泛型 |
4 kumoocat 2023 年 1 月 7 日 ```golang package main import ( "fmt" "math/rand" "time" "golang.org/x/exp/constraints" ) func random[T constraints.Integer | constraints.Float](min, max T) T { rand.Seed(time.Now().UnixNano()) return T(rand.Intn(int(max-min))) + min } func main() { fmt.Println(random(1.14, 5.14)) fmt.Println(random(1, 5)) } ``` |
5 lyonbrown4ddd OP @kumoocat 非常感谢 对 go 泛型还不是很熟练 没想到还可以 T()这样转 |