一、包的一些基本的概念

1、在同一个目录下的所有go文件中,只能有一个main函数。如果存在多个main函数,则在编译的时候会报错

那么,在同一个目录下的两个go文件究竟是什么关系? 为什么会彼此影响呢?

这里要提到go package的两个约束:

1、同一个目录下的go文件,如果package是main,那么这个目录下的go文件只能有一个main函数。

2、同一个目录下的go文件,只能是一个package。 (注意: 这里说的是同一个目录下的go文件,但不是同一个目录下的其他目录中的go文件)

那么问题来了,为什么需要package呢?

在一个项目中,会有很多个go文件,package的作用就是进行一个代码分类组织

举个例子:

  1.在hello.go里面定义个main函数,引用了main的package。

  2.在另一个echo.go里面,因为只能有一个main函数,所以这里只定义了变量 var X string  = "chenchao"

  3.那么在hello.go里面就可以直接用另一个文件中的X变量了

package的作用:

  1、同一个package下可以共享变量

  2、同一个package下可以共享函数

 二、一个在线的package的帮助文档

http://godoc.org/+包的名称

 三、引入第三方的package

例如: 引入github下的一个库

1、go get github.com/icexin/golib

  这一步操作就是讲git上的库下载到本地,你会发现这条命令会将package默认下载到 $GOPATH下的/src/下,并与package的目录结构一致。

2、在/src/的其他目录下新创建一个目录如:/thirdlib/,作为另一个package,然后在目录下新建一个main.go文件,并导入刚才下载的第三方package

  

这里引入的第三方package 是一个全路径,这个路径就是从 $GOPATH/src/开始算起。所以,要写的路径就是从/src/开始。

Go 的package的更多相关文章

  1. NPM (node package manager) 入门 - 基础使用

    什么是npm ? npm 是 nodejs 的包管理和分发工具.它可以让 javascript 开发者能够更加轻松的共享代码和共用代码片段,并且通过 npm 管理你分享的代码也很方便快捷和简单. 截至 ...

  2. npm package.json属性详解

    概述 本文档是自己看官方文档的理解+翻译,内容是package.json配置里边的属性含义.package.json必须是一个严格的json文件,而不仅仅是js里边的一个对象.其中很多属性可以通过np ...

  3. 关于Visual Studio 未能加载各种Package包的解决方案

    问题: 打开Visual Studio 的时候,总提示未能加载相应的Package包,有时候还无法打开项目,各种提示 解决方案: 进入用户目录 C:\Users\用户名\AppData\Local\M ...

  4. SSIS 包部署 Package Store 后,在 IS 中可以执行,AGENT 执行却报错

    可以执行 SSIS Package ,证明用 SSIS Package 的账户是可以执行成功的.SQL Server Agent 默认指定账号是 Network Service. 那么可以尝试一下将 ...

  5. 如何使用yum 下载 一个 package ?如何使用 yum install package 但是保留 rpm 格式的 package ? 或者又 如何通过yum 中已经安装的package 导出它,即yum导出rpm?

    注意 RHEL5 和 RHEL6 的不同 How to use yum to download a package without installing it Solution Verified - ...

  6. [转]安装 SciTE 报错 No package ‘gtk+-2.0′ found

    centos 记事本,有时候感觉不够用,或者 出毛病,打不开文件 然后决定安装个其他的记事本,  找来找去, 感觉 SciTE 还可以,于是下载源码编译安装,结果 No package ‘gtk+-2 ...

  7. ERROR ITMS-90167: "No .app bundles found in the package"错误

    ERROR ITMS-90167: "No .app bundles found in the package" 出现如上错误请查检以下2个方向: 1.macOS Sierra 1 ...

  8. CRL快速开发框架系列教程八(使用CRL.Package)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  9. Sublime text 2/3 中 Package Control 的安装与使用方法

    Package Control 插件是一个方便 Sublime text 管理插件的插件,但因为 Sublime Text 3 更新了 Python 的函数,API不同了,导致基于 Python 开发 ...

  10. pip安装指定版本的package

    起因 最近到一个项目组,用了一套高大上的运维工具来搭建开发环境. 有vagrant控制VirtualBox启动虚拟机.有ansible来运行playbook初始化环境. 然后遇到了一个坑,项目现有的p ...

随机推荐

  1. 【ARC069F】Flags

    Description 数轴上有 \(n\)个旗子,第\(i\)个可以插在坐标\(x_i\)或者\(y_i\). ​ 请最大化两两旗子之间的最小距离. ​ \(2 \le n \le 10^4\),\ ...

  2. 响应式开发(三)-----Bootstrap框架的安装使用

    下载 Bootstrap 可以从http://getbootstrap.com/上下载 Bootstrap 的最新版本. Download Bootstrap:下载 Bootstrap.点击该按钮,您 ...

  3. String,static,final

    1. String 下面代码创建了几个对象? String s1 = new String("Hello"); String s2 = new String("Hello ...

  4. bzoj2755【SCOI2012】喵星人的入侵

    输入格式 第一行为三个整数n,m,K,分别表示地图的长和宽,以及最多能放置的炮塔数量. 接下来的n行,每行包含m个字符,‘#’表示地图上原有的障碍,‘.’表示该处为空地,数据保证在原地图上存在S到T的 ...

  5. Python之旅:流程控制

    流程控制之if...else 每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试. Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定 ...

  6. 6: Junit1_@Test

    @Test注解是测试的基础,它提供了其他作用 1.指定将会抛出的异常类型,如果没有抛出异常或者抛出的一场不属于我们指定的类型,就会算是测试失败了. @Test(expected = RuntimeEx ...

  7. csu1377Putter && HOJ12816

    链接:(csu)http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1377 (HOJ)http://49.123.82.55/online/?actio ...

  8. 五、java面向对象编程_3

    目录 十五.Object类 1.toString 2.equals 十六.对象转型(casting) 十七.动态绑定(多态) 十八.抽象类(abstract) 十九.final关键字 二十.接口 十五 ...

  9. linux命令总结之netstat命令

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

  10. Zabbix应用二:Zabbix添加监控主机

    Zabbix添加被监控主机 一.选择中文语言 Zabbox3.0默认支持中文,可以登录后,点击右上角的用户图标,然后在语言中选择中文即可. 二.添加被监控主机 1.选择'配置'->'主机',然后 ...