<2>Golang基础进阶——基本数据类型

Golang:基本数据类型

1. 整型

整型分为两大类:

  • 按长度分为:int8,、int16、int32、int64
  • 还有对应的无符号整型:uint8、uint16、uint32、uint64

其中,uint8就是我们熟知的byte型,int16对应C语言的short型,int64对应C语言的long型。

1.1.  自动匹配平台的int uint

func main() {
var v1 int32
v1 = 123
v2 := 64

fmt.Println(reflect.TypeOf(v1))
fmt.Println(reflect.TypeOf(v2))
// 输出结果为:
// int32
// int
}

 

2. 浮点型

Go语言支持两种浮点型数:float32和float64。这两种浮点型数据格式遵循IEEE754标准。

float32的浮点数的最大范围约为3.4e38,可以使用常量定义: math.MaxFloat32 。

float64的浮点数的最大范围约为1.8e308,可以使用一个常量定义 math.MaxFloat64 。

func main() {
var f1 float32
f1 = 12
fmt.Println(f1)

f2 := 12.555
fmt.Println(reflect.TypeOf(f2))
fmt.Println(f2)
// 输出结果:
// 12
// float64
fmt.Printf("%f ", f2)
fmt.Printf("%.2f ", f2)
// 输出结果:
// 12.555000
// 12.55
}

注意:float和int不能进行计算,需要强制转换过后才行。

3. 布尔型

布尔型数据在Go语言中以bool 类型进行声明,布尔型数据只有true(真)和 false(假)两个值。

Go语言中不允许将布尔型强制转换为整型,代码如下:

func main() {
var n bool

fmt.Println(int(n) * 2)

// cannot convert n (type bool) to type int
}

布尔型无法参与数值运算,也无法与其他类型进行转换。

func main() {
var v1 bool
v1 = true
fmt.Println(v1)

v2 := (1 == 2)
fmt.Println(reflect.TypeOf(v2))

v3 := !v2
fmt.Println(v3)
// 输出结果:
// true
// bool
// true
}

4. 字符

字符串中的每一个元素叫做“字符”。在遍历或者单个获取字符串元素元素时可以获得字符。
Go语言的字符有以下两种:

  • 一种是uint8类型,或者叫byte型,代表了ASCII码的一个字符。
  • 另一种是rune类型,代表一个UTF-8字符,档处理中文、日文或者其他符合字符时,则需要用到rune类型。rune类型实际是一个int32。

使用 fmt.Printf 中的动词可以输出变量的实际类型,使用这个方法可查看byte和rune的本来类型,代码如下:

func main() {
var a byte = 'a'
fmt.Printf("%d %T ", a, a)
// 输出结果:
// 97 uint8

var b rune = ''
fmt.Printf("%d %T ", b, b)
// 输出结果:
// 20320 int32
}
func main() {
var ch byte
ch = 'a'

fmt.Printf("ch = %c ", ch)
fmt.Println(reflect.TypeOf(ch))
// 输出结果:
// ch = a
// uint8
}

可以发现,byte类型的,实际类型是uint8,其值为'a',对应的ASCII编码为97。rune 类型的b变量的实际类型是int32,对应的Unicode码就是20320。
Go使用了特殊的rune类型来处Unicode,让基于Unicode的文本处理更为方便,也可以使用byte型进行默认字符串处理,性能和扩展性都有照顾。

加油,你们是最棒的!
原文地址:https://www.cnblogs.com/Wshile/p/12660531.html