go - 为什么我的包中的功能不起作用

标签 go package

我在 $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

最佳答案

你需要做一些事情

  1. 我建议使用与文件夹名称相同的包名称。
  2. 需要导出myfn() 函数。怎么做:只需将函数名称的第一个字符设置为大写即可。
package mysrc // <-- 1

import (
    "fmt"
)

func Myfn() { // <-- 2
    fmt.Println("My own fn")
}
  1. main() 语句之前需要 func 关键字。

  2. 要从其他包访问函数,您需要在函数名前写下包名。在此上下文中,它将是 mysrc.Myfn()

package main

import (
    "mysrc"
)

func main() { // <-- 3
    mysrc.Myfn() // <-- 4
}

关于go - 为什么我的包中的功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57229041/

相关文章:

android - 如何使用卸载 Activity 完成 Android 应用程序的实际卸载/删除?

android - 如何取消合并 Android Studio 包

mysql - Apt-Get 找不到包

variables - 在 Golang 中附加一个指向 Slice 的指针

go - 如何解析HTTP请求

node.js - 如何生成 HMAC

python - 在 pypi.python.org 上,什么会导致显式搜索返回隐藏的旧版本

windows - 如何阻止 Golang 在执行 Windows 命令时用反斜杠替换双引号?

google-app-engine - 在 App Engine 上使用 pem 文件的安全方式

java - Gradle包资源分布