综述

golang package是基本的管理单元,package是golang最基本的分发单位和工程管理中依赖关系的体现.
每个golang源代码文件开头都拥有一个package声明,表示该golang代码所属的package。
在golang工程中,同一个路径下只能存在一个package,一个package可以拆成多个源文件组成。
import关键字导入的是package路径,而在源文件中使用package时,才需要package名。经常可见的import的目录名和源文件中使用的package名一致容易造成import关键字后即是package名的错觉,真正使用时,这两者可以不同。

使用总结

package与文件夹:$GOPATH下的每个文件夹,属于同一个package,在同一个文件夹下面只允许有一个package存在。
package与文件: 该文件夹下面可以包含多个文件,每个文件的头部应包含一个package 声明,表明该文件的package归属,同一个文件夹下面的package归属的名字必须相同。还有默认的init方法,在import进来的时候就去执行了,而且允许每个文件中都有init()这个方法,当然是每个都会执行。每个文件中供外部调用的方法和类型,必须用大写字母做首字母。
package的调用:使用import包含相应的package,import “package的路径”调用package的方法使用:name.func().,name为package的名称,路径和名称的名字可以不同
import语法:
import
同一个package下面,可以有非常多的不同文件,只要每个文件的头部都有 如 "package xxx" 的相同name,就可以 在主方法中使用 xxx.Method()调用不同文件中的方法了。
文件夹名字可以和这个package 名称不一致,
比如我有个文件夹名字是mypackage,其中包含了a.go,b.go, c.go三个文件 :
mypackage
| --a.go
| --b.go
| --c.go
比如a.go中有 Saya(),b.go中有Sayb() 而几个文件共同的package name 确是testpackage
所以在 主函数中调用a.go 和b.go文件中的各自方法只要用,testpackage.Saya() ,testpackage.Sayb()即可
还有默认的init方法,在import进来的时候就去执行了,而且允许每个文件中都有init()这个方法,当然是每个都会执行。

参考链接

go package
golang之package

package 被外部访问的包的变量必须生命为大写:
否则会报错:unknown myhuman.Human field 'name' in struct literal

golang (2) package的更多相关文章

  1. golang的哪些坑爷事: package实践

    在golang中package是个困惑的概念, 特别是package还可以与folder不同名, 委实让我恶心了一把. 关于golang的package的最佳实践: package is folder ...

  2. 关于golang中包(package)的二三事儿

    golang的package和其他语言的组织方式完全不同,刚开始接触时,很不适应. golang的package的特点: 1.go的package不局限于一个文件,可以由多个文件组成. 组成一个pac ...

  3. Golang 效率初(粗)测

    从接触 Golang 开始,断断续续已有差不多一年左右的时间了,都是业余自己学学看看,尚主要限于语法及语言特性,还没有用它写过实际的项目. 关于 Golang 的语法及语言特性,网上有很多资源可以学习 ...

  4. golang在Windows下Sublime Text开发调试环境的配置

    一.前言 近期本人有工作调动,进入了一个全新的领域[golang]服务端开发.在此写下本文,希望给那些没接触过golang开发调试环境及还在犹豫选择那家golang IDE而纠结的朋友们一点点帮助,如 ...

  5. golang全文搜索--使用sphinx

    不多废话,测试环境 `ubuntu 13.10` ## 安装 sudo apt-get install sphinxsearch ## 配置 nano /etc/sphinxsearch/sphinx ...

  6. golang初试:坑爷的

    用Golang与perl脚本比较, 初想至多差一倍吧...结果可不是一般的坑爹, 简直就是坑爷了. Perl脚本 #!/bin/bash source /etc/profile; function e ...

  7. C/C++调用Golang 二

    C/C++调用Golang 二 <C/C++调用Golang 一>简单介绍了C/C++调用Golang的方法步骤,只涉及一个简单的函数调用.本文总结具体项目中的使用场景,将介绍三种较复杂的 ...

  8. golang 数组反转

    我做hackerearth上题目记录,具体的题目描述是这样的: Given the size and the elements of array A, print all the elements i ...

  9. Golang Go Go Go part1:安装及运行

    golang 知识图谱 https://www.processon.com/view/link/5a9ba4c8e4b0a9d22eb3bdf0 一.安装 最新版本安装包地址:https://gola ...

随机推荐

  1. CodeForces 540D Bad Luck Island (DP)

    题意:一个岛上有石头,剪刀和布,规则就不用说了,问你最后只剩下每一种的概率是多少. 析:很明显的一个概率DP,用d[i][j][k]表示,石头剩下 i 个,剪刀剩下 j 个,布剩下 k 个,d[r][ ...

  2. 长时间停留在calculating requirements and dependencies

    如果安装插件的时候,Eclipse花费了很长的时间calculating requirements and dependencies(计算需求和依赖性 )这个问题通常就是在点击安装之后显示“Calcu ...

  3. DNS被污染后

    如果有条件,自已DNS还是非常必要的,至少有一亩三分地的净土. 但是DNS污染是无处不在的,特别是 Forwarding的记录, 一旦 IPv6 Tunnel连接失败,DNS Server  瞬间就被 ...

  4. delphi将工程文件转成dll

    1.点击[File]—>[New]—>[Other]菜单项,打开[New Items],选择[New]: 2.选择[Dll Wizard]选项卡,点击ok,DLL工程创建成功. 3.点击[ ...

  5. HDU 1496

    题目出处:HDU OJ 1496 http://acm.hdu.edu.cn/showproblem.php?pid=1496 为了练习Hash,特定采用了杭电自带的分类列表http://acm.hd ...

  6. 利用input event 实时监听input输入的内容

    <div id="addNumber"> <p>How many people would you like to invite?</p> &l ...

  7. 强大的CSS 属性选择符 配合 stylish 屏蔽新浪微博信息流广告

    新建一条微博域名下的规则: @-moz-document domain("weibo.com") { #v6_pl_rightmod_rank,#v6_pl_rightmod_ad ...

  8. MVVM ICommand.CanExecute parameter is null

    CommandParameter="{Binding}" 改为 CommandParameter="{Binding DataContext,RelativeSource ...

  9. Spring学习(三)——集成 Velocity

    上篇文章http://www.cnblogs.com/wenjingu/p/3822989.html我们使用Gradle构建了一个简单的Spring MVC Web应用程序, 本篇将在上篇的基础上将j ...

  10. 二十六、Nodejs 操作 MongoDb 数据库

    一. 在 Nodejs 中使用 Mongodb 前面的课程我们讲了用命令操作 MongoDB,这里我们看下如何用 nodejs 来操作数据库需要引包: npm install mongodb --sa ...