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

问题描述

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

func Fastget(...

用作:

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

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

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

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

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

解决方法

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...