Golang 包管理简介
Golang 包管理
在一个项目里,如果想引用本地包,经常会把新手搞的莫名其妙。这里通俗记录一下。
首先先要知道几个默认的规则
- 必须定义环境变量GOPATH,GOPATH可以定义多个目录
- 所有项目代码都在${GOPATH}/src下面
- 新建一个项目NewProject则其目录为${GOPATH}/src/NewProject
例如NewProject项目目录如下:
-${GOPATH}/src
-NewProject
-main.go
-mypackage
-A.go
源文件main.go
package main
import (
"fmt"
"NewProject/mypackage"
)
func main() {
fmt.Println("hello")
fmt.Println(B.GetString())
}
源文件A.go
package B
//GetString return string
func GetString() string {
return "package B"
}
总结一下自定义包引用规则:
- 自定义的包B不一定要和其所在文件A.go名字一样
- 自定义的包B不一定要和其所在目录mypackage名字一样
- 目录mypackage下不管有多少文件,这些文件都必须属于同一个包,也就是相当于一个文件夹定义一个包
示例里包B在文件夹${GOPATH}/src/NewProject/mypackage下,意味着改文件夹下的文件都要声明package B
- 其他文件(main.go)内导入(import)包时,import里写从{GOPATH}/src开始到最终那个包所在文件夹的相对路径,
示例里包所在文件夹是${GOPATH}/src/NewProject/mypackage,从{GOPATH}/src开始,后面就是NewProject/mypackage,因此引用是要import "NewProject/mypackage"
- 其他文件(main.go)内使用包时,直接使用包名加函数名/类型名
调用函数时就直接B.GetString()
- 一般地,因为一个文件夹定义一个包,我们会把包名起地跟文件夹名一致
否则像示例里,直接调用包B时会显得很奇怪,不能直接看出来它是从哪里import来的。但这不是强制的。
Golang 包管理简介的更多相关文章
- Golang包管理工具glide简介
Golang包管理工具glide简介 前言 Golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情.在这里我感受到了其中一些好处: 没有少了许多代码格式风格的争论, ...
- golang包管理工具
软件开发中,不可避免的会使用到第三方库,因此包管理工具可以极大的方便开发者管理第三方依赖,避免掉入"依赖地狱". 作为google强大背书的golang语言,golang官方包管理 ...
- Golang 包管理机制
Golang 包管理机制 1. 历史 在go1.11之前, 并没有官方的包管理机制(Godep算个半官方), 主流的包管理机制有: GoVendor Glide Godep 在go1.11之后, 官方 ...
- golang包管理工具及环境管理工具;如何下载外网的依赖包
简介: golang的包管理工具类似于java的maven.python的pip.js的npm,可以实现依赖包的统一管理:有很多:govendor.godep.glide,挑一个自己喜欢的用吧.mac ...
- golang包管理解决之道——go modules初探
golang的包管理是一直是为人诟病之处,从golang1.5引入的vendor机制,到准官方工具dep,目前为止还没一个简便的解决方案. 不过现在go modules随着golang1.11的发布而 ...
- golang包管理的取巧
常见的golang的包管理工具 glide 使用yaml做配置,语义化版本管理,可以设置镜像,下载x系列库,但是x系列库被第三方库依赖时会出现下载失败. dep 亲儿子,语义化版本管理,无法解决墙 v ...
- Glide Golang包管理
Golang的包管理乱得不行,各种工具横空出世,各显神通啊.用了几个下来,发现 Glide 是比较好用的,使用了 vender 来进行管理,多个开发环境的版本不冲突,功能强大,配置文件也足够简单. 初 ...
- window下golang包管理glide使用说明
golang是一门简洁高效的开发 语言,但是包管理一直是一个痛点,如图 : 很多开源项目特别是github.com中的大量应用golang.org和google.golang.org中的源码,且由于被 ...
- golang包管理的古往今来
https://golang.org/ before GO1.5-GOPATH 在GO1.5之前用GOPATH以及GOROOT这两个环境变量来决定包的位置. GOROOT就是告知当前go的安装位置,编 ...
随机推荐
- JVM垃圾回收机制之对象回收算法
前言 在前面的文章中,介绍了JVM内存模型分为:堆区.虚拟机栈.方法区.本地方法区和程序计数器,其中堆区是JVM中最大的一块内存区域,在Java中的所有对象实例都保存在此区域,它能被所有线程共享. 在 ...
- 对css语法中position值的理解
1.static 正常定位,就是默认定位,根据他的top,right,bottom,left的值 2.relative 根据他top,right,bottom,left的值偏移 3.absolute ...
- 芯灵思Sinlinx A64 Linux&qt编译安装
开发平台 芯灵思Sinlinx A64 内存: 1GB 存储: 4GB 详细参数 https://m.tb.cn/h.3wMaSKm 开发板交流群 641395230 前提条件搭建好CentOS环境 ...
- Boot Hill 布特山
发售年份 1977 平台 街机 开发商 Midway 类型 射击 https://www.youtube.com/watch?v=yFVZhSCjo6w
- windows远程登录报错 CredSSP不支持Oracle
https://support.microsoft.com/en-us/help/4093492/credssp-updates-for-cve-2018-0886-march-13-2018
- OpenJ_Bailian 4148 生理周期
生理周期 OpenJ_Bailian - 4148 Time limit1000 ms Memory limit65536 kB OS Linux SourceEast Central North A ...
- 【转】SSH穿越跳板机:一条命令跨越跳板机直接登陆远程计算机
转自:http://mingxinglai.com/cn/2015/07/ssh-proxycommand/ 今天在公司搭建跳板机,遇到一个比较麻烦的问题,这里简单记录一下,希望对有相同问题的人有所帮 ...
- SoapUI工具做get请求和post请求接口测试
转载自:https://www.cnblogs.com/hong-fithing/p/7617366.html 此篇主要介绍SoapUI工具做常用的两种请求接口测试,分别是get请求和post请求. ...
- FIRMWARE BUG – THE BIOS HAS CORRUPTED HW-PMU RESOURCES
If you’re trying to install CentOS 7 on HP server and you receive the error from the caption, don’t ...
- 工控随笔_14_西门子_Step7项目:打开项目不可用解决方法
由于计算机系统区域和语言的设置,以及Step建立项目时的不同设置,有时候利用Step7打开项目时 会遇到如下情况: 项目不可用. 具体如下图所示: 图 step 7 打开时项目不可用 一.Step ...