我创建了由名称的库libfastget这是在src我的程序作为src|-libfastget| |-libfastget.go||-MainProgram |-main.go并libfastget导出一个函数fastget如下package libfastgetimport ( "fmt" "io")func fastget(urlPtr *string, nPtr *int, outFilePtr *string) download { ..... return dl}当我在主程序中使用库时package mainimport ( "fmt" "net/http" "os" "libfastget" "path/filepath" "strings" "flag" "time")func uploadFunc(w http.ResponseWriter, r *http.Request) { n:=libfastget.fastget(url,4,filename) }}尝试构建时出现以下错误 go build# FServe./main.go:94: cannot refer to unexported name libfastget.fastget./main.go:94: undefined: libfastget.fastget奇怪的是,库文件 libfastget.a 存在于 pkg 文件夹中。
3 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
您需要使用大写的名称使您的函数可导出:
func Fastget(...
用作:
n:=libfastget.Fastget(url,4,filename)
该规范提到:“导出的标识符”:
可以导出标识符以允许从另一个包访问它。如果同时满足以下条件,则会导出标识符:
标识符名称的第一个字符是 Unicode 大写字母(Unicode 类“
Lu
”);和标识符在包块中声明,或者它是一个字段名称或方法名称。
不导出所有其他标识符。
拉丁的传说
TA贡献1789条经验 获得超8个赞
我最近开始学习 GO Lang(2 天前),我发现您需要设置一个工作区文件夹才能将本地包导入到其他项目或 main.go 文件中。我正在使用 VS Code 编辑器。如果我错了,请纠正我,但这个设置对我来说很好。
在您的bash_profile
OR.zshrc
文件中添加以下行,根据您的文件夹路径更新 GOPATH。
export GOPATH=~/projects/GO_PROJECTS export PATH=$PATH:$GOPATH/bin:$PATH
这是我的sayHello.go文件,请注意要能够导出函数func名称应以大写字母SayHello开头
package utils
import "fmt"
func SayHello() {
fmt.Println("Hello, Ajinkya")
}
现在我可以将 utils 包导入 main.go 文件
package main
import (
"go_proj1/utils"
)
func main() {
utils.SayHello()
}
- 3 回答
- 0 关注
- 235 浏览
添加回答
举报
0/150
提交
取消