【发布时间】:2017-08-17 14:11:36
【问题描述】:
考虑这个包:
package A
var X="change me"
var Y=func(i int) int { return i*i) }
func Z(i int) int { return -i) }
两个显式变量 (X,Y) 可以在另一个包中更改,比如 main...
package main
import "A"
func main () {
A.X="done"
A.Y=func (i int) int { return i*i*i }
print(A.X,A.Y(7))
//... but A.Z apparently can't be changed.
//A.Z=func (int i) int { return i*i*i } //main.go:8: cannot assign to A.Z
}
显然,定义 func 变量(如 Y)和显式 func(如 Z)之间存在差异。我用谷歌搜索了这个,但没有发现太多启蒙的方式。看起来好像 var SomeFunc=func (...) 确实定义了一个变量,但 func SomeFunc(...) 定义了一个常量。
PS:我在研究这个时发现的一个小东西,到目前为止我读过的围棋书籍中没有提到它。包导入前的点会导入名称,而不必对其进行限定:
package main
import . "A"
func main () {
X="done"
Y=func (i int) int { return i*i*i }
print(X,Y(7))
}
【问题讨论】:
-
你有什么问题?
-
这几乎是 stackoverflow.com/q/23925005/5419599 的副本,但这个问题有更多答案。
标签: go