我试图弄清楚如何从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 /其他软件包?thx
最起码,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 used as value
不返回值,但是您仍然尝试将其用作一个值。您的res.Test
does具有返回值。
还有,您的main.go没有导入res.Test
。您应该遇到类似res
的错误,但没有。
这表示还有另一个undefined: res
程序包在某处浮动,带有res
函数,没有返回值。