这部分学习go的基础语法,变量的使用以及基本数据类型
变量
三部曲
go中声明变量的三种基本形式
- 单变量的写法
//1、基本声明方式
var i int // 声明一个变量i,数据类型为int,默认值会被赋值为0
//2、声明与赋值写到一起,会通过类型推导
var i = 10 // i的数据类型会被动态判断出来是int
//3、go独特的写法, 省略var,采用冒号的写法
i := 10
//这种写法等同于 var i int
//i=10
- 多变量的写法
// 1、三个相同数据类型的变量
var n1, n2, n3 int
//2、多个不同数据类型的变量
var n1, n2, n3 = 10, "string", 10.2 //类型推导
//3、同样使用冒号写法
n1, n2, n3 := "string", 10, 9
注意:一旦省略了var,采用了类型推导,必须赋值,不能使用默认值了
- 全局变量 的写法
// 在函数之外的变量被称为全局变量
var (
n1 = "string"
n2 = 10
n3 = 10.2
)
数据类型
同大多数语言一样,分为基本数据类型和复杂数据类型(也叫派生数据类型)
- 基本数据类型:
bool
string
int
rune
byte
float32
float64
complex64
complex128
。byte
也可以认为是uint8
,rune
等同于int32
- 复杂数据类型:
function
map
array
Pointer
等多种
数值类型
go的数值类型还是比较多的,比js
复杂多了,而且要注意不同数值类型精度的问题。
int
类型在不同位数电脑上范围不同,32位电脑是8字节,64位电脑是16字节。有符号。还有int8 int16 int32 int64
unit
无符号,还包括uint8 uint16 uint32 uint64
- 有时候判断某个变量到底是什么数据类型不能直接判断出,例如
var n = 10
,n
到底是什么类型,看不出来,可以采取以下的办法:fmt.Println("n is %T", n)
,就是打印一下n
的type - 有时候需要判断一下某个变量占用的字节数,可以使用
fmt.Println("n is %d", unsafe.Sizeof(n))