前言:即将成为一名Golang语言的开发人员,把自己学习的过程记录下来与大家一起分享,希望能给您带来帮助,如果在编写的过程中有什么错误或者我说的不对的地方还请大家不吝赐教,给我留言我好及时做修改防止误导其他阅读人员,在此就先行感谢了!
声明:本问中的内容均出自《Go语言编程》、《Go语言学习笔记》、《Go并发编程实战》、以及视频“跟着无闻学Go”视频连接如下:http://edu.51cto.com/course/course_id-1762.html
Go语言基础之类型
Go语言的关键字不多,下面我们就列举下Go语言的基本数据类型
类型 | 长度 | 默认值 | 说明 |
---|---|---|---|
bool | 1 | false | 布尔类型,真为true假为false |
byte | 1 | 0 | 字节类型 |
int,uint | 4,8 | 0 | 默认整数类型,依据目标平台32或64位 |
int8,uint8 | 1 | 0 | 8位二进制数代表有符号整数类型与无符号 |
int16,uint16 | 2 | 0 | 16位二进制数代表有符号整数类型与无符号 |
int32,uint32 | 4 | 0 | 32位二进制数代表有符号整数类型与无符号 |
int64,uint64 | 8 | 0 | 64位二进制数代表有符号整数类型与无符号 |
float32 | 4 | 0.0 | 浮点类型 |
float64 | 8 | 0.0 | 默认浮点类型 |
complex64 | 8 - | - | |
complex128 | 16 | - | - |
rune | 4 | 0 | Go语言特有类型专用于存储Unicode编码 |
uintptr | 4,8 | 0 | 指针 |
string | - | “” | 字符串,默认为空字符串非NULL |
array | - | - | 数组 |
struct | 结构体 | ||
function | nil | 函数 | |
interface | nil | 接口 | |
map | nil | 字典,引用类型 | |
slice | nil | 切片,引用类型 | |
channel | nil | 通道,引用类型 |
变量的定义
定义
关键字var用于变量的定义,于其它语言不同Go语言定义变量将类型放在变量名后面。
var x int //定义一个int类型的变量,自动初始化为0
var b = false //自动推断为bool类型
var i,j,k int //一次定义多个变量
var i,s = 100,"abc" //不同类型的初始化
//也可以以组的方式定义多个变量:
var(
x,y int
a,s = 100,"abc"
)
简短模式
除了使用关键字‘var’,还可以使用更加简短的方式定义和初始化变量:
x := 10
a,s := 1,”abc”
注:使用简短模式应注意以下问题:
1 定义变量的同时显示的初始化
2 不能提供数据类型
3 只能在函数内部使用
多变量赋值
相信很多C++程序员都碰到过交换两个变量值得问题,在C++中需要引入第三个变量来完成值得交换,在Go语言中提供了多变量赋值的方法从而省略了第三个变量。
x,y := 1,2
x,y = y+3,x+2
//此时x的值为5,y的值为3
命名
说了这么多,我们也应该说下Go语言中的命令了,对变量、常量、函数、自定义类型进行命名,通常优先使用有实际含义,易于阅读的字母或单子组合。注意在Go语言中没有类也没有public关键字在Go语言中是方法或者变量在外部可访问的办法就是将首字母大写。
命名建议:
- 以字母或下滑线开始,由多个字母、数字和下划线组合而成
- 区分大小写
- 使用驼峰拼写格式
- 局部变量优先使用短名
- 不用使用保留关键字
- 不用使用与预定于常量、类型、内置函数相同的名字
- 专有名字通常为全部大写,如escapeHTML
空标识符
Go语言中有个名为”_”的特殊成员,通常被作为忽略的占位符使用,可做表达式的左值。
x,_,z := 1,2,3
上面的示例并不明显,但是在函数的多返回值时使用时还是很方便的。
常量
相信C++程序员对常量并不陌生,常量表示一个恒定不可改变的值,在Go语言中也使用‘const’修饰。
const x,y int = 1,2
const s = "hello"
const(
i,f = 1,3.14
b = false
)
枚举
Go语言并没有明确意义上的enum定义,不过可以借助‘iota’标识符实现一组自增常量值来实现枚举类型。
const(
x = iota //x值为0
y // 1
z // 2
)
以上可以看出iota是自增的如若中断必须显示的恢复
const(
a = iota // a为0
b // 1
c = 100 // c的值为100
d // d的值为100
e = iota // e得值为4此时恢复了自增
f // 5
)
自增的默认类型为int也可显示的制定类型
const(
a = iota //int
b float32 = iota //float32
c int = iota //int
)
在实际的使用中,建议使用自定义类型实现用途明确的枚举类型。
type color byte //自定义类型
cont(
black color = iota //制定常量类型
red
blue
)
引用类型
引用类型特指slice、map、channel这三种预定义类型,相比数字、数组等类型引用类型拥有更复杂的存储结构。除分配内存外他们还需要初始化一系列属性,诸如指针、长度、甚至包括哈希分布、数据队列等。
引用类型会再之后的章节中进行详细的介绍。
自定义类型
自定义类型使用关键字‘type’,和var与const类似,多个type定义可合并成组,可在函数或代码块内定义局部类型。
type data int
var d data = 10
有疑问加站长微信联系(非本文作者)