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这个方法来进行初始化。

最新文章

  1. an interview question(2)
  2. ASP.NET控件<ASP:Button /> html控件<input type="button">区别联系
  3. Spring学习8-Spring事务管理(AOP/声明式式事务管理)
  4. Malformed POM expected START_TAG or END_TAG not TEXT
  5. 字符串反转(StringBuffer)
  6. xib和Storyboard 创建Cell的方式
  7. noip2015 提高组day1、day2
  8. Android自学学习资料
  9. 使用IIS建立自己的网站、使用C#编写IIS模拟器,更好的理解Client和Server的relation
  10. 你会用swift创建复杂的加载动画吗(1)
  11. 计算机的启动和Linux的启动
  12. mac下使用命令行打包出现bash gradle command not found的解决方案
  13. C/C++中的函数指针的使用与总结
  14. ERC20数字货币ProxyOverflow存在漏洞
  15. 使用nvidia-smi命令查看显卡信息
  16. 内核知识第六讲,内核编写规范,以及获取GDT表
  17. ubuntu14.04下 Kinect V2+Ros接口安装
  18. StackExchange.Redis在net中使用
  19. 面试:C++String类实现
  20. postman get和post结合

热门文章

  1. mac 使用apache开启https功能,实现ios局域网内测(一)
  2. Editplus 文件中批量搜索字符串的技巧
  3. 关于JSP和HTML
  4. hive 提取用户第一次浏览/购买 某商品的 时间
  5. instanceof 与typeof的用法
  6. SpringCloud系列十七:Hystrix的监控
  7. Linux 系统 pptpd+radius+mysql 安装攻略
  8. [sj系统] phabricator系统升级
  9. 140726暑期培训.txt
  10. 第一篇:初识python