一、包的一些基本的概念

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. Linux内核分析期中知识点总结

    Linux内核分析期中知识点总结 1. 计算机是如何工作的 存储程序计算机工作模型:冯诺依曼体系结构 X86汇编基础 会变一个简单的C程序分析其汇编指令执行过程 2. 操作系统是如何工作的 函数调用堆 ...

  2. debian修改时区

    这里提供两种方法 一.使用dpkg-reconfigure修改 # dpkg-reconfigure tzdata Current default time zone: 'Asia/Shanghai' ...

  3. zookeeper和PHP zookeeper和kafka 扩展安装

    http://blog.csdn.net/fenglailea/article/details/52458737#t3   目录(?)[-] 安装zookeeper 1直接安装zookeeper无须编 ...

  4. bzoj3473: 字符串 && bzoj3277串

    3473: 字符串 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 121  Solved: 53[Submit][Status][Discuss] D ...

  5. 【bzoj4231】回忆树

    题解: 树上的串匹配,模式串的总长$|S|$,令$\overline {S} $为$S$的反串: 对$S$和$\overline {S} $分别建自动机 $u -> v$可以分成三个部分去统计 ...

  6. increment/decrement/dereference

    #include <vector> #include <deque> #include <algorithm> #include <iostream> ...

  7. python---Django中模型类中Meta元对象了解

    Django中模型类中Meta元对象了解 1.使用python manage.py shell 进入编辑命令行模式,可以直接进入项目(为我们配置好了环境) python manage.py shell ...

  8. js计时器方法的使用

    js中计时器重要使用window.setInterval()方法和window.setTimeout()方法, 其中setInterval()方法的作用是每隔一段时间执行一次方法,而window.se ...

  9. SQL语句(十八)—— 存储过程

    存储过程 系统存储过程 自定义存储过程 扩展存储过程 一.创建存储过程 创建存储过程 --例1 USE SU GO Create Procedure SelProc AS Select * From ...

  10. Asp.Net使用加密cookie代替session验证用户登录状态 源码分享

    首先 session 和 cache 拥有各自的优势而存在.  他们的优劣就不在这里讨论了. 本实例仅存储用户id于用户名,对于多级权限的架构,可以自行修改增加权限字段   本实例采用vs2010编写 ...