2 回答
TA贡献1828条经验 获得超3个赞
无法打印函数A
中声明的变量值Smile()
from main()
。
主要原因是变量A
只有在代码执行进入函数时才存在Smile()
,更准确地说是到达A
变量声明。在您的示例中,这永远不会发生。
即使在其他一些示例中发生这种情况(例如Smile()
被调用),应用程序也可能有多个 goroutine,并且其中多个 goroutine 可能Smile()
同时执行,导致应用程序具有多个A
变量,彼此独立。在这种情况下,which would A
in main()
refer?
Go 使用块在词法范围内。A
这意味着内部声明的变量Smile()
只能从 访问Smile()
,main()
函数不能引用它。如果你需要这样的“共享”,你必须A
在Smile()
. 如果两者Smile()
都main()
需要访问它,则必须将其设为全局变量,或者必须将其传递给需要它的函数。
使它成为一个全局变量,这就是它的样子:
var a int
func smile() {
a = 5
fmt.Println("a in smile():", a)
}
func main() {
smile()
fmt.Println("a in main():", a)
}
此输出(在Go Playground上尝试):
a in smile(): 5
a in main(): 5
将其声明为本地main()并将其传递给smile(),这就是它的样子:
func smile(a int) {
fmt.Println("a in smile():", a)
}
func main() {
a := 5
fmt.Println("a in main():", a)
smile(a)
}
输出(在Go Playground上尝试):
a in main(): 5
a in smile(): 5
TA贡献1780条经验 获得超3个赞
最好的方法是,
指针
前任:
func getCar() {
car := Vehicles.Car{}
setModel(&car)
// model ("BMW") will be available here
}
func setModel(car *Vehicles.Car) {
car.Model = "BMW"
}
- 2 回答
- 0 关注
- 123 浏览
添加回答
举报