我在 $GOPATH
中放了一个小代码文件,它是 ~/go/src
。这里我创建了一个文件夹mysrc
,在那里我保存了一个文件mytest.go
,如下所示:
package mytest
import ("fmt")
func myfn(){
fmt.Println("My own fn")
}
我尝试使用以下文件导入上面的代码:
package main
import ("mysrc")
main(){
myfn()
}
当我尝试运行上面的文件时,出现错误:
# command-line-arguments
./useMyfn.go:3:1: syntax error: non-declaration statement outside function body
问题出在哪里,如何解决?感谢您的帮助。
编辑:我将 main fn 更正为 func main()
但现在的错误是:
# command-line-arguments
./useMyfn.go:2:9: imported and not used: "mysrc" as mytest
./useMyfn.go:4:2: undefined: myfn
最佳答案
你需要做一些事情
- 我建议使用与文件夹名称相同的包名称。
- 需要导出
myfn()
函数。怎么做:只需将函数名称的第一个字符设置为大写即可。
package mysrc // <-- 1
import (
"fmt"
)
func Myfn() { // <-- 2
fmt.Println("My own fn")
}
在
main()
语句之前需要func
关键字。要从其他包访问函数,您需要在函数名前写下包名。在此上下文中,它将是
mysrc.Myfn()
。
package main
import (
"mysrc"
)
func main() { // <-- 3
mysrc.Myfn() // <-- 4
}
关于go - 为什么我的包中的功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57229041/