从go中的另一个函数调用变量
我知道变量在go中是通过值传递的。但是,我想调用一个变量,该变量在func内部,在该函数外部。让我举个例子:从go中的另一个函数调用变量,go,Go,我知道变量在go中是通过值传递的。但是,我想调用一个变量,该变量在func内部,在该函数外部。让我举个例子: package main import ( "fmt" ) func Smile(){ A := 5 } func main() { fmt.Println(A) } 这给了我一个不明确的答案 通过考试的最佳方式是什么?我应该使用指针吗?怎么做?无法从main()打印Smile()函数中声明的A变量的值 主要原因是变量A只有在代码执行进入Smile()函数
package main
import (
"fmt"
)
func Smile(){
A := 5
}
func main() {
fmt.Println(A)
}
这给了我一个不明确的答案
通过考试的最佳方式是什么?我应该使用指针吗?怎么做?无法从
main()
打印Smile()
函数中声明的A
变量的值
主要原因是变量A
只有在代码执行进入Smile()
函数时才存在,更准确地说是到达A
变量声明。在您的示例中,这种情况从未发生过
即使在某些其他示例中发生这种情况(例如调用了Smile()
),应用程序也可能有多个goroutine,其中多个goroutine可能同时执行Smile()
,从而导致应用程序具有多个彼此独立的A
变量。在这种情况下,main()
中的A
是指哪个
这意味着在Smile()
中声明的变量A
只能从Smile()
访问,而main()
函数不能引用它。如果您需要这种“共享”,您必须在Smile()之外定义A
。如果Smile()
和main()
使其成为一个全局变量,它可能是这样的:
var a int
func smile() {
a = 5
fmt.Println("a in smile():", a)
}
func main() {
smile()
fmt.Println("a in main():", a)
}
func smile(a int) {
fmt.Println("a in smile():", a)
}
func main() {
a := 5
fmt.Println("a in main():", a)
smile(a)
}
这将输出(在上尝试):
在main()
中将其声明为本地,并将其传递给smile()
,如下所示:
var a int
func smile() {
a = 5
fmt.Println("a in smile():", a)
}
func main() {
smile()
fmt.Println("a in main():", a)
}
func smile(a int) {
fmt.Println("a in smile():", a)
}
func main() {
a := 5
fmt.Println("a in main():", a)
smile(a)
}
输出(在上尝试):
最好的办法是,
指针
例:
谢谢我问这个问题的原因是因为我想从函数中的API定义变量,并将这些变量传递给其他函数。你回答了我的问题。你已经看过了吗?你根本不调用变量。
func getData() {
primaryData := Primary.PrimaryData{}
getAirTemperatureData(&primaryData)
// value will be available here
}
func getPrimaryData(primaryData *Primary.PrimaryData) {
primaryData.DataOne = "Value"
}