登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-04-06 14:25:22 259浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《在 Go Lang 中导入自定义包时出错》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我创建了一个名称libfastgetsrc我的程序中的库

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

正确答案

您需要使用大写的名称使您的函数可导出:

func Fastget(...

用作:

n:=libfastget.Fastget(url,4,filename)

规范提到:“导出的标识符”:

可以导出标识符以允许从另一个包访问它。如果同时满足以下条件,则导出标识符:

  • 标识符名称的第一个字符是 Unicode 大写字母(Unicode 类“ Lu”);和

标识符在包块中声明,或者是字段名方法名

不会导出所有其他标识符。

理论要掌握,实操不能落!以上关于《在 Go Lang 中导入自定义包时出错》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>