[Go语言]从Docker源码学习Go——init()方法和identifier首字母大小写区分
init()方法
如果想在一个go文件里,进行一些初始化的工作,可以把代码放到init()方法中。
init()方法先被执行。
func init() { // initialization of package
}
注意:它是没有输入参数和返回参数的。
identifier首字母大小写区分
当identifier(比如constant,variable,type,function,struct field,...)的命名首字母是大写的话,那表示这个identifier在包外是可以见的;
类似public的作用。
相反,当identifier的首字母小写时,表示这个idenfitier只在包内可见;
类似private的作用。
注意:在包外是否可见与go语言的反射会有一定关系,如果只是包内可见,那在进行反射查找时会有问题产生。
我们也可以通过大小写来进行对初始化的限制
pakcage matrix
type matrix struct {
...
}
function NewMatrix(params) *matrix {
m := new(matrix)
//m is initialized
return m
}
在main中
package main import "matrix" wrong := new(matrix.matrix) //will not compile(matrix is private)
right := matrix.NewMatrix(...) //the ONLY way to instantiate a matrix
我们现在在matrix包外,只能通过NewMatrix这个方法来进行初始化。
[Go语言]从Docker源码学习Go——init()方法和identifier首字母大小写区分的更多相关文章
- [Go语言]从Docker源码学习Go——结构和函数的定义
Docker在最近很火,而作为Docker的开发语言-Go也再次被大家提到. 已经使用Docker一段时间了,但是对于源码,尤其是其开发语言Go却一直是一知半解. 最近准备利用空余时间从Docker源 ...
- [Go语言]从Docker源码学习Go——指针和Structs
这两天在看reflect这个包在Docker中的使用时,遇到了各种问题,最后虽然知道怎么用了. 但是对于这块的原理还不是太懂,于是把"THE WAY TO GO"中关键的几章看了下 ...
- [Go语言]从Docker源码学习Go——function和method
function和method关系 method是针对某一类型定义的function, function可以单独调用,method必须针对某一类型的实例进行调用 //function 调用方式 pac ...
- [Go语言]从Docker源码学习Go——if语句和map结构
if语句 继续看docker.go文件的main函数 if reexec.Init() { return } go语言的if不需要像其它语言那样必须加括号,而且,可以在判断以前,增加赋值语句 语法 I ...
- [Go语言]从Docker源码学习Go——main函数
Go程序从main包下的main函数开始执行,当main执行结束后,程序退出. Docker的main函数在 docker/docker/docker.go package main //Import ...
- [Go语言]从Docker源码学习Go——Interfaces
Interface定义: type Namer interface { Method1(param_list) return_type Method2(param_list) return_type ...
- Go语言 context包源码学习
你必须非常努力,才能看起来毫不费力! 微信搜索公众号[ 漫漫Coding路 ],一起From Zero To Hero ! 前言 日常 Go 开发中,Context 包是用的最多的一个了,几乎所有函数 ...
- jquery源码解析:val方法和valHooks对象详解
这一课,我们将讲解val方法,以及对value属性的兼容性处理,jQuery中通过valHooks对象来处理. 首先,我们先来看下val方法的使用: $("#input1").va ...
- Docker源码分析(三):Docker Daemon启动
1 前言 Docker诞生以来,便引领了轻量级虚拟化容器领域的技术热潮.在这一潮流下,Google.IBM.Redhat等业界翘楚纷纷加入Docker阵营.虽然目前Docker仍然主要基于Linux平 ...
随机推荐
- Eclipse Debug 使用
Eclipse的debug模式:代码调试 * Eclipse或MyEclipse就是java的开发工具 * Eclipse开源的.免费的Java开发工具 * MyEclipse基于Eclipse开 ...
- 后台dubug有值且sql也打印出来执行了但是前台就是查不到数据
记录在sturts2里面 摔得最深的一次 public String queryJoinAccount(){ //用来存储分页的数据 pageMap=new HashMap<String, Ob ...
- nopi使用 设置列样式 宽高 设置分页符
HSSFWorkbook book = new HSSFWorkbook(); ISheet sheet = book.CreateSheet("test_01"); sheet. ...
- CentOS erlang安装、emqtt
安装erlang 如果未安装以后程序,请先安装依赖 $sudo yum install gcc gcc-c++ glibc-devel make ncurses-devel openssl-dev ...
- Windows 7/8/8.1 误删EFI启动项,无法开机解决方式(U盘+原版镜像)
今天手贱把Windows 7的启动项删了.由于是GPT分区,EFI引导的,又不像MBR那般easy解决 想想重装系统也麻烦,并且仅仅是删了个启动项而已.就不是必需去费那个时间 想了一下,Windows ...
- Struts2架构分析和执行机制
实例分析 1.在浏览器中输入url地址后,会通过http协议发送给tomcat,tomacat收到请求后查看訪问的是哪个 webapplication(例如以下图的Struts2_0100_Intro ...
- Tomcat 学习进阶历程之Tomcat架构与核心类分析
前面的http及socket两部分内容,主要是为了后面看Tomcat源代码而学习的一些网络基础.从这章開始.就開始实际深入到Tomcat的'内在'去看一看. 在分析Tomcat的源代码之前,准备先看一 ...
- poj2392 Space Elevator(多重背包问题)
Space Elevator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8569 Accepted: 4052 ...
- layui实现点击按钮添加行(方法渲染创建的table)
/ jquery实现的搜索功能 $('#search_btn').on('click',function(){ var txt=$('#inputValue').val(); var value=$( ...
- tomcat能启动正常,但是输入localhost:8080不能登录
怎么配置JDK和TOMCAT应该百度经验已经很好地解释了. tomcat启动成功了,但是 localhost:8080 登录不成功. 有一种可能,缺少http:// 输入: http://loca ...