生成一个随机数
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 初始化随机数生成器
rand.Seed(time.Now().UnixNano())
// 生成一个随机整数
randomInt := rand.Intn(100)
// 输出随机整数
fmt.Println(randomInt)
}
关闭channel
一个channel如果已经被关闭,再去关闭的话会 panic,此时就可以应用 sync.Once 来帮忙。
type T int
type MyChannel struct {
c chan T
once sync.Once
}
func (m *MyChannel) SafeClose() {
// 保证只关闭一次channel
m.once.Do(func() {
close(m.c)
})
}