variables - 如何通过包共享变量
问题描述
我试图弄清楚如何将 a 文件中的函数的值返回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
. 我在哪里做错了,我该如何返回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
不返回值,但您还是尝试将其用作一个值。你res.Test
确实有一个返回值。
此外,您的 main.go 没有导入res
. 你应该得到一个错误,undefined: res
但你没有。
这表明有另一个res
包在某处浮动,其Test
函数没有返回值。
推荐阅读
- selenium - Microsoft Edge V18363 在 C# Selenium 项目中打开后立即冻结
- postgresql - PostgreSQL SQL查询输出列表哪些表属于哪个表空间,反之亦然?
- javascript - 如何解决“IntrinsicAttributes & Function”类型上不存在“类型属性”?
- hide - 有什么方法可以隐藏或混淆模式 json-ld?
- javascript - Django-React 应用程序中的缺陷
- javascript - 有什么办法可以停止 Socket.io 的监听?
- powershell - 从 AD 用户中获取 UIDNumbers
- c# - 错误 CS1525:无效的表达式术语“字符串”
- javascript - 导入一个 javascript 文件并调用其中的函数
- visual-studio - 如何在 Visual Studio 中将 Nunit 测试作为构建后任务运行?