[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 matrixtype matrix struct {...
}function NewMatrix(params) *matrix {m := new(matrix)//m is initializedreturn m
}

在main中

package mainimport "matrix"wrong := new(matrix.matrix)    //will not compile(matrix is private)
right := matrix.NewMatrix(...)    //the ONLY way to instantiate a matrix

我们现在在matrix包外,只能通过NewMatrix这个方法来进行初始化。

转载于:https://www.cnblogs.com/lemonbar/p/3925961.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习在目标视觉检测中的应用进展与展望

作者:张慧,王坤峰,王飞跃来源:王飞跃科学网博客摘要:目标视觉检测是计算机视觉领域的一个重要问题,在视频监控、自主驾驶、人机交互等方面具有重要的研究意义和应用价值.近年来,深度学习在图像分类研究中取得了突破性进…

leetcode-sort-colors

题目描述 Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue. Here, we will use the integers 0, 1, and 2 to represent the color red, white, and…

ubuntu 上已经安装libxml2还提示需要reinstall的解决方法

最近在ubuntu上配置环境,遇到一些奇怪的问题,已经安装了libxml2了,运行 apt-get install libxml2提示已经是最新版本了,可以在安装软件的时候还是提示没有libxml2,经过多方查询是缺少libxml2-dev包,其他的遇…

leetcode-search-in-rotated-sorted-array

转载自:http://www.acmerblog.com/leetcode-solution-search-in-rotated-sorted-array-ii-6210.html 题目描述 Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e.,0 1 2 4 5 6 7might become4 5 6 7 0 1 2). You are given a targ…

云计算与边缘计算协同发展的一些思考

来源:云计算开源产业联盟摘要:从边缘计算诞生开始,就一直有声音说边缘计算是云计算的“终结者”。但经过时间的验证,云计算和边缘计算的关系更加清晰:由于边缘计算解决了在边缘资源中云计算应用的应用问题,…

Ubuntu安装Gems报错的解决办法

安装执行: sudo -u git -H bundle install --deployment --without development test postgres安装的时候出现了两个问题 第一个报错: Fetching source index from https://rubygems.org/ Could not find modernizr-2.6.2 in any of the sources最终成功…

python 文件和目录 当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。

廖雪峰python教程中的<操作文件和目录>下的第二题目的解答&#xff0c; 网址为&#xff1a; http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431925324119bac1bc7979664b4fa9843c0e5fcdcf1e000 编写一个程序&#xff0c;能在…

腾讯和头条,构建类脑神经元网络的两条路线之争

作者&#xff1a;计算机博士&#xff0c;《互联网进化论》作者刘锋前言&#xff1a;在中国的社交网络领域&#xff0c;今日头条&#xff08;抖音&#xff09;等异军突起&#xff0c;对腾讯的优势地位产生了挑战&#xff0c;在这篇文章中用互联网大脑模型&#xff0c;分析了腾讯…

5G年终盘点:2018,意难平

来源&#xff1a;C114中国通信网2018&#xff0c;对于5G来说是动荡的一年。2017年底&#xff0c;在国际电信标准组织3GPP RAN第78次全体会议上&#xff0c;5G NR首发版本正式发布&#xff0c;这是全球第一个可商用部署的5G标准。5G自此走近大众视野&#xff0c;开始被频繁地提起…

C语言中#define中的一些特殊用法

转载自&#xff1a;http://blog.sina.com.cn/s/blog_4a4365030100edq7.html define是C语言中的预处理命令&#xff0c;它用于宏定义&#xff0c;可以提高源代码的可读性&#xff0c;为编程提供方便。 预处理命令以“#”号开头&#xff0c;如包含命令#include&#xff0c;宏定…

BEGINNING SHAREPOINT#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置

BEGINNING SHAREPOINT 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置 你应该熟悉&#xff08;假设还咩有&#xff09;的SharePoint主要部分之中的一个是站点设置。你可用点击右手角落的齿轮图标&#xff0c;点击站点设置来訪问站点设置。在此页面你会发现大部…

一文读懂柔性电子传感器

来源&#xff1a;传感器技术目前&#xff0c;许多智能化的检测设备已经大量地采用了各种各样的传感器&#xff0c;其应用早已渗透到诸如工业生产、海洋探测 、环境保护 、医学诊断 、生物工程 、宇宙 开发 、智能家居等方方面面。 随着信息时代的应用需求越来越高&#xff0c;对…

《金狐系统维护盘》六周年纪念版UD/ISO +PE维护

本版的定位是“重维护&#xff0c;求兼容”&#xff0c;包含Windows 2003 PE维护版和Windows 8 PE X64维护版及功能相当强大的DOS工具MaxDOS9.3增强版&#xff0c;不带三卡驱动&#xff0c;体积小巧&#xff08;370mb&#xff09;&#xff0c;从茫茫网海里精心挑选50几款精品维…

C++模版类的简单使用

声明转载自&#xff1a;http://blog.csdn.net/hackbuteer1/article/details/6735704 1、模板的概念 我们已经学过重载(Overloading)&#xff0c;对重载函数而言,C的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如&#xff0c;为求两个数的最大值&…

智慧城市领域又出最新报告——智慧交通将迎来大爆发

来源&#xff1a;雷锋网近日&#xff0c;智慧城市领域又出了一份新的重磅报告——来自全球第二大市场研究机构MarketsandMarkets。综合整体报告来看&#xff0c;其中的几个观点&#xff0c;对于国内智慧城市产业非常有借鉴意义。预测的增长数据报告称&#xff0c;2018年全球智慧…

浮动div居中定位

当图片不能设为背景的时候&#xff0c;图片上需要配文字&#xff0c;文字div就需要设成浮动层position:absolute&#xff1b; 但是这时&#xff0c;这个浮动div无法显示在img中间位置&#xff0c;不同分辨率的移动设备会显示位置错乱 这时可以将浮动div设成相对body的定位&…

回顾2018,正在改变未来游戏规则的技术

来源&#xff1a;资本实验室回顾2018年&#xff0c;基于数字化的新技术继续推动着各行的的变革。人工智能、基因技术、物联网、3D打印、区块链……这些技术的应用在改变传统行业游戏规则的同时&#xff0c;给我们提供了关于未来技术应用的想象空间。当然&#xff0c;在看到美好…

jQuery之防止【冒泡事件】,阻止默认行为 【return false】 event.stopPropagation event.preventDefault...

知识点&#xff1a; event.stopPropagation() 阻止冒泡 event.preventDefault() 阻止默认事件&#xff0c;比如button提交后跳转到链接页面 两者都可以用 return false 代替。 冒泡事件就是点击子节点&#xff0c;会向上触发父节点&#xff0c;祖先节点的点击事件。 下面是h…

C++中operator的两种用法

首先声明&#xff0c;转载自&#xff1a;http://blog.csdn.net/skdkjzz/article/details/45872801 转换函数的名称是类型转换的目标类型&#xff0c;因此&#xff0c;不必再为它指定返回值类型&#xff1b;转换函数是被用于本类型的数值或变量转换为其他的类型&#xff0c;也不…

2018年世界科技发展回顾

来源&#xff1a;科技日报摘要&#xff1a;本文从科技政策、基础研究、信息技术、人工智能与先进制造、空间技术、能源环保等六个领域&#xff0c;回顾了2018年世界主要国家的科技发展。2019年或许会很不平常&#xff0c;只因2018年世界主要国家之间关系风云变幻&#xff0c;让…