WuShaolin

悟已往之不谏,知来者之可追!

0%

go变量和数据类型

这部分学习go的基础语法,变量的使用以及基本数据类型

变量

三部曲

  1. 声明变量
  2. 赋值
  3. 使用该变量

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 complex128byte也可以认为是uint8,rune等同于int32
  • 复杂数据类型: function map array Pointer 等多种

数值类型

go的数值类型还是比较多的,比js复杂多了,而且要注意不同数值类型精度的问题

  1. int类型在不同位数电脑上范围不同,32位电脑是8字节,64位电脑是16字节。有符号。还有int8 int16 int32 int64
  2. unit无符号,还包括uint8 uint16 uint32 uint64
  3. 有时候判断某个变量到底是什么数据类型不能直接判断出,例如var n = 10n到底是什么类型,看不出来,可以采取以下的办法:fmt.Println("n is %T", n),就是打印一下n的type
  4. 有时候需要判断一下某个变量占用的字节数,可以使用fmt.Println("n is %d", unsafe.Sizeof(n))