21 lines
596 B
Go
21 lines
596 B
Go
package service
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"crypto/rand"
|
||
|
|
"encoding/hex"
|
||
|
|
)
|
||
|
|
|
||
|
|
// newID 生成一个随机编号,用作 result_id 之类的标识。
|
||
|
|
//
|
||
|
|
// 没用 UUID 库是为了少一个依赖——这里只要求"够随机、不重复",
|
||
|
|
// 16 字节的随机十六进制串完全够用。
|
||
|
|
func newID() string {
|
||
|
|
buf := make([]byte, 16)
|
||
|
|
if _, err := rand.Read(buf); err != nil {
|
||
|
|
// crypto/rand 读失败说明系统熵源出了问题,这种情况极罕见。
|
||
|
|
// 返回空串让调用方的响应里 result_id 为空,总比 panic 掉整个进程好。
|
||
|
|
return ""
|
||
|
|
}
|
||
|
|
return hex.EncodeToString(buf)
|
||
|
|
}
|