当前位置: 首页 > 面试题库 >

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

喻渊
2023-03-14
问题内容

我创建了由名称的库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文件夹中。


问题答案:

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

func Fastget(...

用作:

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

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

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

  • 标识符名称的第一个字符是Unicode大写字母(Unicode类“ Lu”);和
  • 标识符在包块中声明,或者是字段名或方法名。

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



 类似资料:
  • 我试图创建自定义包,我把我的其他程序,但当我导入这个包,它会给我错误。 这是自定义包文件: 这是我导入此包的测试文件: 我得到了这个错误: 我的目录设置是:

  • 问题内容: 我的$ GOPATH是 我当前的golang版本: 我在这个工作区下有多个golang项目,所以这是目录的结构 在proj1的main.go中,我将使用该项目下其他软件包的导入,如下所示: 但是,当我运行“ go build”时,我一直在收到错误消息: “ 无法加载包:非本地包中的本地导入“ ../package” 如果我不想使用相对的包路径,例如使用它: 然后一切都会正常。 如果使用

  • 酱紫写还是找不到包

  • 问题内容: 我可能会丢失一些显而易见的东西,但是无论如何: 当您像在python中那样导入软件包时,您可以直接使用任何子模块/子软件包。例如,这有效: 但是我有自己的软件包,其结构如下: 并且这里相同的逻辑不起作用: 我究竟做错了什么? 问题答案: 您需要导入子模块: 您正在寻找的是。您可以通过将(或)放入来解决它,然后Python就能在其中找到。但我建议使用我的第一个建议。

  • 问题内容: 我在构建会话bean 时遇到了麻烦。 找不到以下内容: 一些解决方案暗示将库和.jar 添加到Java构建路径。 我正在使用并且在给定位置($ JAVA_HOME \ lib)找不到这些库中的任何一个。我在机器上使用eclipse(kepler) 问题答案: javaee.jar既不提供eclipse也不提供java(jdk)。该文件必须手动下载并添加到项目构建路径。可以在此处找到ja