第三天:golang基础入门之变量常量初始化,import导包学习
前言
首先介绍变量四种初始化方法,然后介绍常量初始化方法,最后介绍import导包相关知识。
一、golang变量初始化方法
1.单变量初始化
golang变量初始化有四种方法,这里以int数据类型为例,列举四种方法:
法一:
var a int // 此方法初始化一个int变量a,初始化值为0
法二:
var a int = 10 // 此方法初始化一个int变量a,初始化值为10
法三:
var a = 10 // 此方法初始化一个变量a,编译器识别其类型为int,并且初始化值为10
法四:
a := 10 // 此方法初始化一个int变量a,初始化值为0
法一,法二,法三既可以作为局部变量声明在函数体内,也可以作为全局变量声明在函数体外。法四则只能作为局部变量声明在函数体内。
2、多变量初始化
法一,相同类型多变量声明:
var a,b int // 此方法初始化一个int变量a,一个int变量b,初始化值均为0
法二,相同类型多变量声明:
var a,b int = 10,20 // 此方法初始化一个int变量a,值10,一个int变量b,初始化值为20
法三,不同类型多变量声明:
var a int,b string // 此方法初始化一个int变量a,初始化值为0,初始化一个string变量b,初始化值为“”
二、使用步骤
1、普通常量声明
单个常量声明
const a = 10
多个常量声明
const (
a = 10
b = 20
)
2、itoa高阶常量声明
itoa关键字每行加1,可以以公式的方式计算常量值
例如:
const (
a = itoa // 初始化iota = 0, 所以 a = 0
b // 每行自增1,iota = 1, 所以 b = 1
c // 每行自增1,iota = 2, 所以 c = 2
d = itoa * 2 // 每行自增1,iota = 3, 所以 d = 6
e // 使用相同公式,每行自增1,iota = 4, 所以 e = 8
f // 使用相同公式,每行自增1,iota = 5, 所以 f = 10
g, h = itoa + 1, itoa * 2 // 每行自增1,iota = 6, 所以 g = 7, h = 12
i, j // 每行自增1,iota = 7, 所以 i = 8, h = 14
)
三、import导包相关知识
1、如何导入一个$GOPATH/src目录下自己开发的包
以这个包所在目录在$GOPATH/src/project/lib1下为例,调包的Main函数在$GOPATH/src/project/main.go下,
错误的方式为:
import "lib1"
正确的方式为(未开启go module的情况下):
import "project/lib1"
因为没开启go module的前提下,go编译器会从$GOROOT/src下或者$GOPATH/src目录下寻找包,而不是这两个目录的所有子目录,所以import "lib1"会报找不到对应路径的错误。
2、如何导入一个第三方包
首先将第三方包的下载并解压缩到$GOPATH/src目录下,则第三方就如同自己开发的包模块,直接按照相对$GOPATH/src的路径导入即可。
3、导包过程
导包的执行流程如下图所示,递归的去执行所有被导包下的Init()函数并初始化相关变量和常量之后再返回调用方,并且按照全局变量常量初始化,init()函数执行,main()函数的顺序执行。
4、导包进阶
导入匿名包,作用是可以不使用包中任何变量并且执行init()函数:
import _ "lib1"
导入包并改名,作用是改成简单易识别的名字
import mylib "lib1"
mylib.A = 100 // 使用变量要加包的别名
导入包的所有变量常量,作用是相当于把被调用包的所有变量常量放到被调用方下,但是一定要谨慎使用,因为可能调用方与被调用方含有重名变量
import . "lib1"
A = 100 // 使用被调用方的变量不需要加包名