Python转Go学习之路篇1-基础知识
原创
©著作权归作者所有:来自51CTO博客作者山南溪北的原创作品,请联系作者获取转载授权,否则将追究法律责任
GO语言基础知识
Go语言中的变量和常量
作为绑定某个存储单元的标识符分为两类
- 变量:指向的内存可以被修改
- 常量:指向的内存不能被修改
1.变量!
使用一个名称来绑定一块内存地址,该内存地址中存放的数据类型由定义变量时指定的类型决定,该内存地址里面存放的内容可以改变。
1.1. 变量显示声明
var varName dataType [= value]
var 关键字用于变量声明
varName 是变量名标识符
dataType 表示基本数据类型
value 表示变量的初始值,可以是字面量也可以是其他变量名,还可以是个表达式,如果不指定初始值,则Go会默认将该变量初始化为类型的零值
Go声明变量以后会立即为其分配内存空间
var a int = 1
var a int = 2*3
var a int =b
1.2. 变量短类型声明
varName := value
:= 声明只能出现在函数中包括在方法内
此时Go编译器自动推断数据类型
Go也支持多个类型变量同时声明赋值
a,b := 1,'hello'
短类型声明,编译器自动推断变量的数据类型
1.3. 变量总结
- 变量名
- 变量值
- 变量存储和生存期(go语言自动内存管理-栈逃逸技术自动分配内存空间,可能在栈上也可能在堆身上)
- 类型信息
- 可见性和作用域
2. 常量
常量使用一个名称来绑定一块内存地址,该内存地址中存放的数据类型由定义常量时指定的类型决定,而且该内存地址里面存放的内容不可以改变。分为布尔型、字符串型和数值型。常量存储在程序的只读段里(.rodata section)
预声明标识符iota 用在常量声明中,其初始值为0.一组多个常量同时声明时其值逐行增加,iota可以看作自增的枚举变量,专门用来初始化常量。
//类型枚举的iota
const (
c0 = iota // c0 = 0
c1 = iota // c1 = 1
c2 = iota // c2 = 2
)
// 简写模式
const (
c0 = iota
c1
c2
)
// 需要注意iota逐行增加
const (
a = 1 << iota
b = 1 << iota
c = 3 << iota
d = 1 << itoa
)
const (
u = iota * 42
v float64 = iota *42
2 = iota * 42
)
// 分开的const,iota每次都从0开始
const x = iota
const y = iota