如何通过包共享变量
How to share variables through packages
我想弄清楚如何 return 一个 package name
文件中函数的值到另一个 package
。
例如,假设您有
package main
func main(){
x := 5
a := res.Test(x)
}
package res
func Test(x int) (y int){
y := x*2
return y
}
如果我编译它,我会得到一个错误:res.Test used as value
。我哪里做错了,我怎么能 return y
到 main/ 和其他包?
谢谢
在最基本的情况下,Go 包必须在它们自己的文件目录中。 res
进入 ~/go/src/res/
.
// ~/go/src/res/res.go
package res
func Test(x int) (y int){
// Note that y is already declared.
y = x*2
return y
}
那么你的main.go
就可以导入这个包了。
package main
import(
"res"
"fmt"
);
func main(){
x := 5
a := res.Test(x)
fmt.Println(a)
}
另见
这里针对您的特定错误进行了一些进一步的调试。
请注意,您发布的 res
代码不应编译。您应该会收到类似 ./res.go:4:7: no new variables on left side of :=
.
的错误
res.Test used as value
表示 res.Test
不是 return 一个值,但您仍然试图将其用作一个值。您的 res.Test
有 return 值。
此外,您的 main.go 没有导入 res
。你应该得到像 undefined: res
这样的错误,但你没有。
这表明 还有另一个 res
包漂浮在某处 具有 Test
功能但没有 return值。
我想弄清楚如何 return 一个 package name
文件中函数的值到另一个 package
。
例如,假设您有
package main
func main(){
x := 5
a := res.Test(x)
}
package res
func Test(x int) (y int){
y := x*2
return y
}
如果我编译它,我会得到一个错误:res.Test used as value
。我哪里做错了,我怎么能 return y
到 main/ 和其他包?
谢谢
在最基本的情况下,Go 包必须在它们自己的文件目录中。 res
进入 ~/go/src/res/
.
// ~/go/src/res/res.go
package res
func Test(x int) (y int){
// Note that y is already declared.
y = x*2
return y
}
那么你的main.go
就可以导入这个包了。
package main
import(
"res"
"fmt"
);
func main(){
x := 5
a := res.Test(x)
fmt.Println(a)
}
另见
这里针对您的特定错误进行了一些进一步的调试。
请注意,您发布的 res
代码不应编译。您应该会收到类似 ./res.go:4:7: no new variables on left side of :=
.
res.Test used as value
表示 res.Test
不是 return 一个值,但您仍然试图将其用作一个值。您的 res.Test
有 return 值。
此外,您的 main.go 没有导入 res
。你应该得到像 undefined: res
这样的错误,但你没有。
这表明 还有另一个 res
包漂浮在某处 具有 Test
功能但没有 return值。