Go| 青训营

154 阅读1分钟

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依赖的冲突问题。