如何通过包共享变量

问题描述 投票:-2回答:1

我试图弄清楚如何从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

variables go func
1个回答
0
投票

最起码,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函数,没有返回值。

© www.soinside.com 2019 - 2024. All rights reserved.