Golang包

所有可执行的Go程序都必须包含一个main函数,作为程序运行的入口,main函数放在main包中。

通过package packagename来指定一个包。

自定义包

我们可以在Go工作区内的src文件夹中创建一个文件夹,属于一个包的源文件应该放置在一个单独命名的文件夹里,按照Go惯例,应该用包名命名该文件夹。

在自定义的文件夹中创建源文件,当我们需要导入自定义包时,通过import方式,后面的包名是相当于src文件夹的相对路径。

自定义包中的源文件用自定义包名命名,包中可被外部引用访问的方法需要用大写字母命名。

在Go惯例中,大写字母开头的方法是public方法,是可以被导出的方法。

init函数

所有包都可以包含一个init函数,此函数不应该有任何返回值类型和参数,代码中也不能显示的调用它。

func init(){
}

init函数用于执行初始化任务,类似于java中的static代码块。

包初始化顺序

顺序如下:

  • 被依赖的包会先进行初始化,一个包可能被导入多次,但只会被初始化一次。
  • 首先初始化包级别变量。
  • 接着调用init函数,包中可以包含多个init函数,编译器按自己的解析顺序调用。

在Go中,如果导入了某个包而不使用它,编译器会报错。 如果想导入但不报错,可以采用空白标识符_来避免程序报错。

package mainimport(
    _ "module/customerpackage")func main(){

}

原文发布于微信公众号 - 服务端技术杂谈(develop_king)

原文发表时间:2018-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python中文社区

Python3.7 contextvars 初探

Python 3.7 于2018年6月27日发布,本篇文章将对其中新增模块contextvars 做初步介绍,为读者勾勒一个大概轮廓。

1435
来自专栏用户2442861的专栏

【深入Java虚拟机】之四:类加载机制

转载请注明出处:http://blog.csdn.net/ns_code/article/details/17881581

571
来自专栏向治洪

java基础Haep(堆)和Stack(栈)区别

简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。  stack:是自动分配变量,以及函数调用的时候所使用的一些空...

2047
来自专栏GreenLeaves

C#核编之一个简单的C#程序

构建一个简单的C#应用程序需要注意一下几点: 1、C#要求所有的程序逻辑都包含在一个类型定义中   --->这里的类型指的是(类,接口,结构,枚举,委托中的一个...

19410
来自专栏CodingToDie

java 代理

java 代理 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额...

3484
来自专栏程序员互动联盟

【答疑释惑】java中的全局变量

首先,java中是没有全局变量这个概念的,java程序中不能像C++那样在类外定义全局变量,因为JAVA当初出现的初衷就是为了安全性和跨平台性,所以去掉了类似C...

39011
来自专栏Java学习网

JavaScript依赖注入的实现思路

JavaScript依赖注入的实现思路 如今各个框架都在模块化,连前端的javascript也不例外。每个模块负责一定的功能,模块与模块之间又有相互依赖,那么问...

2076
来自专栏IMWeb前端团队

Promise接口实现之jQuery 的deferred对象

本文作者:IMWeb json 原文出处:IMWeb社区 未经同意,禁止转载 Promise是什么? 我们知道JavaScript是单线程,如果遇到某...

18110
来自专栏python3

python类(class)

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例,把所有相似的功能都封装到一个类里,最理...

1043
来自专栏用户2442861的专栏

java类加载过程

转载请注明出处:http://blog.csdn.net/ns_code/article/details/17881581

1291

扫码关注云+社区