golang (2) package
综述
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()这个方法,当然是每个都会执行。
参考链接
package 被外部访问的包的变量必须生命为大写:
否则会报错:unknown myhuman.Human field 'name' in struct literal
golang (2) package的更多相关文章
- golang的哪些坑爷事: package实践
在golang中package是个困惑的概念, 特别是package还可以与folder不同名, 委实让我恶心了一把. 关于golang的package的最佳实践: package is folder ...
- 关于golang中包(package)的二三事儿
golang的package和其他语言的组织方式完全不同,刚开始接触时,很不适应. golang的package的特点: 1.go的package不局限于一个文件,可以由多个文件组成. 组成一个pac ...
- Golang 效率初(粗)测
从接触 Golang 开始,断断续续已有差不多一年左右的时间了,都是业余自己学学看看,尚主要限于语法及语言特性,还没有用它写过实际的项目. 关于 Golang 的语法及语言特性,网上有很多资源可以学习 ...
- golang在Windows下Sublime Text开发调试环境的配置
一.前言 近期本人有工作调动,进入了一个全新的领域[golang]服务端开发.在此写下本文,希望给那些没接触过golang开发调试环境及还在犹豫选择那家golang IDE而纠结的朋友们一点点帮助,如 ...
- golang全文搜索--使用sphinx
不多废话,测试环境 `ubuntu 13.10` ## 安装 sudo apt-get install sphinxsearch ## 配置 nano /etc/sphinxsearch/sphinx ...
- golang初试:坑爷的
用Golang与perl脚本比较, 初想至多差一倍吧...结果可不是一般的坑爹, 简直就是坑爷了. Perl脚本 #!/bin/bash source /etc/profile; function e ...
- C/C++调用Golang 二
C/C++调用Golang 二 <C/C++调用Golang 一>简单介绍了C/C++调用Golang的方法步骤,只涉及一个简单的函数调用.本文总结具体项目中的使用场景,将介绍三种较复杂的 ...
- golang 数组反转
我做hackerearth上题目记录,具体的题目描述是这样的: Given the size and the elements of array A, print all the elements i ...
- Golang Go Go Go part1:安装及运行
golang 知识图谱 https://www.processon.com/view/link/5a9ba4c8e4b0a9d22eb3bdf0 一.安装 最新版本安装包地址:https://gola ...
随机推荐
- Greeplum 系列(四) 实战
Greeplum 系列(四) 实战 表结构 (1) 拉链表结构 create table public.member_fatdt0 ( member_id varchar(64), phoneno v ...
- Webstorm 10.0.4 配置
1. 更换为sublime text的keymaps: https://github.com/ekaragodin/idea-sublime-keymap (idea-sublime-keymap- ...
- git post-receive
1. 将 www 目录设为 777 2. 用git 用户 mkdir 并 git init 3. cat id_rsa.pub >. authorkeys
- 利用predis操作redis方法大全
predis是PHP连接Redis的操作库,由于它完全使用php编写,大量使用命名空间以及闭包等功能,只支持php5.3以上版本,故实测性能一般,每秒25000次读写. 将session数据存放到re ...
- JS 单例模式
<parctical common lisp>的作者曾说,如果你需要一种模式,那一定是哪里出了问题.他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通用的解决方案. 不管是弱类型 ...
- 简述各大 Linux 发行版,有主观,不完全,望见谅
只罗列当前热门的linux发行版 更多关于 Linux 以及 Linux 衍生版的内容可以参阅 中文wiki Debian 系 Debian:开源社区的代表性 linux 系统,每2年一次更新,现在的 ...
- 关于SoftReference的使用
SoftReference一般可以用来创建缓存的,缓存我们经常使用,例如:我们在浏览器中浏览了一个网页后,点击跳转到新的网页,我们想回去看之前的网页,一般是点击回退按钮,那么这个时候之前的网页一般就是 ...
- 17、Semantic-UI之分页插件
在很多的前端开发框架中都会有提供分页插件,但是分页插件的使用如果手动编写还是比较复杂的.使用Semantic-UI中的分页插件更加简单方便.分页插件的使用必须要和后台结合. 示例:定义分页插件 & ...
- 6、Semantic-UI之动画按钮样式
6.1 动画按钮样式 在Semantic-UI中提供了三种动画样按钮式表,分别为: 左右移动 上下移动 淡入淡出 在实际开发中,很少使用这种动画按钮,根据实际情况使用,强制使用到页面中反而不太适合 ...
- redis整理の配置
redis有一个很强大也很重要的配置文件redis.conf.此文件可以随服务启动,为服务配置各种不同场景所需的参数: daemonize: 默认情况下,redis 不是在后台运行的,如果需要在后台运 ...