猿问

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

我创建了由名称的库libfastget这是在src我的程序作为


src

|-libfastget

|  |-libfastget.go

|

|-MainProgram

   |-main.go

并libfastget导出一个函数fastget如下


package libfastget


import (

    "fmt"

    "io"


)



func fastget(urlPtr *string, nPtr *int, outFilePtr *string) download {

    .....

    return dl


}

当我在主程序中使用库时


package main


import (

    "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 文件夹中。


HUH函数
浏览 236回答 3
3回答

慕标5832272

您需要使用大写的名称使您的函数可导出:func Fastget(...用作:n:=libfastget.Fastget(url,4,filename)该规范提到:“导出的标识符”:可以导出标识符以允许从另一个包访问它。如果同时满足以下条件,则会导出标识符:标识符名称的第一个字符是 Unicode 大写字母(Unicode 类“ Lu”);和标识符在包块中声明,或者它是一个字段名称或方法名称。不导出所有其他标识符。

拉丁的传说

我最近开始学习 GO Lang(2 天前),我发现您需要设置一个工作区文件夹才能将本地包导入到其他项目或 main.go 文件中。我正在使用 VS Code 编辑器。如果我错了,请纠正我,但这个设置对我来说很好。在您的bash_profileOR.zshrc文件中添加以下行,根据您的文件夹路径更新 GOPATH。export GOPATH=~/projects/GO_PROJECTS export PATH=$PATH:$GOPATH/bin:$PATH这是我的sayHello.go文件,请注意要能够导出函数func名称应以大写字母SayHello开头package utilsimport "fmt"func SayHello() {    fmt.Println("Hello, Ajinkya")}现在我可以将 utils 包导入 main.go 文件package mainimport (    "go_proj1/utils")func main() {    utils.SayHello()}
随时随地看视频慕课网APP

相关分类

Go
我要回答