为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过包共享变量

如何通过包共享变量

Go
蝴蝶不菲 2022-05-18 16:51:44
我试图弄清楚如何将 a 文件中的函数的值返回package name到另一个package. 例如让我们假设你有package mainfunc main(){   x := 5   a := res.Test(x)}package resfunc Test(x int) (y int){    y := x*2    return y}如果我编译它,我会得到一个错误:res.Test used as value. 我在哪里做错了,我该如何返回ymain/ 和其他包?谢谢
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

最基本的,一个 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函数没有返回值。


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信