go数据类型

支持的数据类型

概述

基本数据类型

  • 布尔类型 : bool (同PHP)
  • 整型: int8,byte,int16,int,unit ,unitptr (PHP整型只有int型)
  • 浮点类型: float32,float64(PHP为float,double)
  • 复数类型: complex64,complex128(PHP中并无此类型)
  • 字符类型:rune(PHP并无此类型)
  • 字符串类型:string(同PHP string)
  • 错误类型: error(PHP并无此类型)

复合类型

  • 指针(PHP并无此类型)
  • 数组(类似PHP中数组)
  • 切片(类似PHP中数组)
  • 字典(类似PHP中数组)
  • 通道(PHP中无)
  • 结构体(类似class)
  • 接口(类似PHP interface)

布尔

go中bool只能切必须为true,false,因为go为强类型语言,如果定义为bool类型,不能像PHP中一样用1,0来代替true,false

同样空,null,0,等在go中也不能作为布尔判断

1
2
3
var b bool
b = 1
//cannot use 1 (type int) as type bool in assignment

整型

go中的整型分的很详细,不同于PHP中只有int型.特别注意的go中整型每个类型都是独立的,不能作为同类型进行比较和运算

1
2
3
4
5
var int_1 int8
int_2 := 8 //自动推断为int型
int_1 = int_2 // int int8 为两种不同类型

//cannot use int_2 (type int) as type int8 in assignment

浮点数

go中浮点分为float32,float64,同样这2个也是相对独立的,不能作为同类型比较和运算

复数

go中支持复数类型运算

解释来自百度:

我们把形如z=a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。当z的虚部等于零时,常称z为实数;当z的虚部不等于零时,实部等于零时,常称z为纯虚数。复数域是实数域的代数闭包,即任何复系数多项式在复数域中总有根。 复数是由意大利米兰学者卡当在十六世纪首次引入,经过达朗贝尔、棣莫弗、欧拉、高斯等人的工作,此概念逐渐为数学家所接受。

字符串类型

go中字符串类型不同于PHP的是,go中一旦定义了就不可更改,属于不可变的,并且字符串需要双引号来定义字符串值

1
2
3
4
var str string
str = "这是字符串,只能通过双引号来定义,并且不可更改,属于不可变类型"
ch := str[0]
fmt.Println(ch)

字符类型

go中字符有两种:

  • unit8(byte型),代表ASCII码的一个字符
  • rune类型,代表一个utf-8字符.处理中文,日文等复合字符时,需要用到rune类型,rune类型实际上是一个int32