以下Golang代码为什么不运行?

时间:2017-01-13 11:56:26

标签: go

此代码运行并提供0到999之间的随机数:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    rand.Seed(time.Now().UnixNano())
    fmt.Println(rand.Intn(999))
}

但是以下代码拒绝运行并发出错误

代码:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    r := rand.Seed(time.Now().UnixNano())
    fmt.Println(r.Intn(999))
}

错误讯息:

  

rand.Seed(time.Now()。UnixNano())用作值

注意:我是stackOverflow的新手,所以如果问题不是根据规则或标准,请原谅我。

3 个答案:

答案 0 :(得分:2)

rand.Seed不会返回任何值,它是一个无效函数。

答案 1 :(得分:1)

来自godoc

  

Seed使用提供的种子值将生成器初始化为a   确定性状态。不应该同时调用种子   其他Rand方法。

这意味着,它设置了一些生成随机数的种子并且不返回任何内容,但是您尝试将其用作某个值

答案 2 :(得分:0)

rand.Seed“设置”rand.Intn,如果愿意的话。当您致电rand.Seed时,它会创建一个种子,可以在以后 中使用rand.Intnrand.Intn返回一个值,所以

rand.Seed(time.Now().UnixNano())
fmt.Println(rand.Intn(999))

的工作原理。但由于rand.Seed 会返回一个值,因此在其上调用rand.Intn会返回错误。