Go
随机数种子
在Go语言中,随机数种子是通过**math/rand包的Seed函数来设置的。 Seed**函数的签名如下:
goCopy code
func Seed(seed int64)
要生成随机数,你需要先设置一个种子,通常使用当前时间来确保每次运行程序时都会有不同的种子。例如,可以使用**time**包获取当前时间的纳秒级别时间戳,并将其作为种子。
以下是一个设置随机数种子并生成随机数的示例:
goCopy code
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 设置种子为当前时间的纳秒级别时间戳
rand.Seed(time.Now().UnixNano())
// 生成随机整数
randomInt := rand.Intn(100)
fmt.Println("Random number:", randomInt)
}
每次运行上述代码,都会生成不同的随机数,因为种子是基于当前时间动态设置的。
并行 VS 并行
Go可以充分发挥多核优势,高效运行
Goroutine
协程:用户态,轻量级线程, 栈 KB 级别 线程:内核态,线程跑多个协程, ,栈MB 级别
CSP
提倡通过通信共享内存而不是通过共享内存而实现通信
Channel
make(chan元素类型,【缓冲大小】) 无缓冲通道 make(chan int) 有缓冲通道 make(chan int,2)
Go Vendor
●项目目录下增加vendor文件,所有依赖包副本形式放在$ProjectRoot/vendor ●依赖寻址方式:vendor=>GOPATH
通过每个项目引入一份依赖的副本解决了多个项目需要同一个package依赖的冲突问题。