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

在 Go Lang 中导入自定义包时出错

在 Go Lang 中导入自定义包时出错

Go
HUH函数 2021-08-16 10:26:22
我创建了由名称的库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”);和

  • 标识符在包块中声明,或者它是一个字段名称或方法名称。

不导出所有其他标识符。


查看完整回答
反对 回复 2021-08-16
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

我最近开始学习 GO Lang(2 天前),我发现您需要设置一个工作区文件夹才能将本地包导入到其他项目或 main.go 文件中。我正在使用 VS Code 编辑器。如果我错了,请纠正我,但这个设置对我来说很好。

在您的bash_profileOR.zshrc文件中添加以下行,根据您的文件夹路径更新 GOPATH。

export GOPATH=~/projects/GO_PROJECTS
export PATH=$PATH:$GOPATH/bin:$PATH

//img1.sycdn.imooc.com//6119ccf50001ff6e15800571.jpg

这是我的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()

}


查看完整回答
反对 回复 2021-08-16
  • 3 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

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