当我运行以下代码时,它在行
中给出了错误的未定义数学运算fmt.Println("The square root of 4 is",math.Sqrt(4))
但是,当我仅运行一种方法(foo或boo)时,不会给出错误。
package main
import ("fmt"
"math/rand")
func main() {
boo();
foo();
}
func boo() {
fmt.Println("A number from 1-100",rand.Intn(100))
}
func foo() {
fmt.Println("The square root of 4 is",math.Sqrt(4))
}
答案 0 :(得分:2)
如Volker在评论中所述,导入math/rand
不会导入math
。您必须明确import "math"
。
Go不是一种解释语言。导入在编译时解决,而不是在运行时解决。调用这两个函数中的哪一个都不重要,即使您不调用它们中的任何一个也不重要。该代码无法通过以下两种方式进行编译:
$ nl -ba main.go
1 package main
2
3 import (
4 "fmt"
5 "math/rand"
6 )
7
8 func main() {
9 }
10
11 func boo() {
12 fmt.Println("A number from 1-100", rand.Intn(100))
13 }
14 func foo() {
15 fmt.Println("The square root of 4 is", math.Sqrt(4))
16 }
$ go build
# _/tmp/tmp.doCnt09SnR
./main.go:15:48: undefined: math