• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    golang import自定义包方式

    1.初探

    刚开始接触go时,以为import自定义包与Java工程类似,在非GOPATH的路径中新建了一个go项目HelloGo,如下:

    接下来,利用beego的bee工具新建了另一个项目helloapi,如下:

    现在,想在helloapi项目中调用HelloGo项目的函数,通过import引入“HelloGo”,编辑器中一直提示无法引用,即使把HelloGo添加到左下角的GOPATH[helloapi]中,也没有效果。

    具体如下:

    问题出在HelloGo项目的路径上,因为其不在系统定义的GOPATH路径下,查看下系统定义的GOPATH:

    localhost:helloapi loongshawn$ echo $GOPATH
    /Users/loongshawn/Documents/go/workspace
    localhost:helloapi loongshawn$ 

    因此,要想引入自定义的包,需要自定义包的路径为GOPATH路径中。

    2.操作

    在工程A中创建方法Say,如下代码:

    package routers
    import (
        "fmt"
    )
    
    func Say() {
        fmt.Println("引用helloweb项目的Say方法")
    }
    

    在工程B中引入工程A,并调用A工程中的Say函数,同时启动工程A,Console输出结果如下:

    输出结果显示,调用Say函数正常。不知大家注意到被调用函数Say的写法没有,函数名首字母是大写的,如果把其换成小写行不行?

    在A工程的router.go中新增了print函数,试一下:

    func print() {
        fmt.Println("引用helloweb项目的print方法")
    }

    B工程中重新引用A工程的print方法,但是引用不了。因此,在写可调用方法时,方法名首字母需要大写,这是需要注意的一点。

    由于接触Go不久,许多地方理解不一定到位,如有纰漏之处,请各位同学帮忙指出来,谢谢!

    补充:GoLang 自定义包总结

    大概总结一下 GoLang 自定义包,并不是需要发布的包,只是一次在代码工作路径下调用自定义包的一个尝试。

    今天踩坑就是,以为 import 的时候要填写文件夹里面的 package 的名称,比如之前我是这么写的:

    import "./pack/p"

    这样无法通过编译,这就是本文的由来了

    首先,工作的目录结构是这样的:

    .
    ├── main.go
    └── pack
        └── test.go
    
    1 directory, 2 files
    

    其中,各个文件代码为:

    // main.go
    package main
    import (
            "fmt"
           "./pack"
    )
    func main() {
            s := p.Sayhello()
            fmt.Println(s)
    }
    
    // pack/test.go
    package p
    func Sayhello() string {
            return "Hello!"
    }
    

    在主目录下通过 go run 或者 go build 的方法运行或编译,都是可以通过的。

    证明了以下几点:

    import 语句使用的是文件夹的名称

    上面的文件夹名字为 pack

    文件夹名称和 package 名称不一定一样

    比如 pack 和 p

    调用自定义包使用 package.函数名 的方式

    p.xxx

    自定义包的调用和文件名没有关系。

    test.go 和 p 没有关系

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • Golang import本地包和导入问题相关详解
    • Golang import 导入包语法及一些特殊用法详解
    • 对Golang import 导入包语法详解
    • golang 之import和package的使用
    • golang中import cycle not allowed解决的一种思路
    • 详解golang避免循环import问题(“import cycle not allowed”)
    上一篇:golang 接口嵌套实现复用的操作
    下一篇:解决golang在import自己的包报错的问题
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    golang import自定义包方式 golang,import,自定义,包方式,