今天来学习Go语言中的基本数据类型,还是相当丰富,除了基本的整型
、浮点型
、布尔型
、字符串
、数组
,还有切片
、结构体
、函数
、map
、通道(channel)
等。其实Go语言的基本类型和其他语言大同小异,下面我们来认识一下吧~
基本数据类型
整型
整型分类两大类:
- 有符号 -
int8
、int16
、int32
、int64
- 无符号 -
uint8
、uint16
、uint32
、uint64
特殊整型
说明:它们的类型会根据操作系统的不同而不同,因此如果要使用它们需要考虑在不同平台之间的差异性,建议慎用。
八进制、十六进制
GO语言中不可以直接定义二进制数,关于八进制、十六进制小示例如下:
package main
import "fmt"
func main() {
// 十进制
var i1 = 101
fmt.Printf("%d\n", i1) // 十进制 101
fmt.Printf("%b\n", i1) // 十进制转二进制 1100101
fmt.Printf("%o\n", i1) // 十进制转八进制 145
fmt.Printf("%x\n", i1) // 十进制转十六进制 65
// 八进制,以0开头
i2 := 066
fmt.Printf("%d\n", i2) // 十进制 54
// 十六进制,以0x开头
i3 := 0x111
fmt.Printf("%d\n", i3) // 十进制 273
}
浮点型
GO语言中的浮点型分为两类:float32
和float64
。
float32
- 最大值为3.4e38
,可以使用常量math.MaxFloat32
来定义。float64
- 最大值为1.8e308
,可以使用常量math.MaxFloat64
来定义。
打印浮点型可以使用%f
,小示例如下:
package main
import (
"fmt"
"math"
)
func main() {
var a1 = 123.11726366
fmt.Printf("%T\n", a1) // float64
fmt.Printf("%f\n", a1) // 123.117264 会有一定的精度损失
a2 := float32(13.222) // 指定具体类型,不指定时默认为float64
fmt.Printf("%T\n", a2) // float32
fmt.Printf("%f\n", a2) // 13.222000
// 最大范围
fmt.Printf("%f\n", math.MaxFloat32)
fmt.Printf("%f\n", math.MaxFloat64)
}
布尔型
GO语言以bool
场景布尔型数据,布尔型只有true
和false
两个值。
注意:
- 布尔型的默认值为
false
- 不允许将整型强制转为布尔型(和PHP不一样)
- 布尔型也不能参与数值运算
字符串
GO语言中的字符串与其它语言基本一致,内部实现使用utf-8
编码,字符串的值为双引号
的内容,如下:
a1 := "hello"
a2 := "你好"
// 多行字符串,使用“反引号”,指原样输出
a3 := `第一行
第二行
`
注意:
- 字符串必须使用
双引号
包裹,单引号
包裹的是字符!!!
字符串转义符
GO语言的字符串常见转义符包含回车
、换行
、单双引号
、制表符
等,具体如下:
字符串常用操作
类型转换
GO语言中只有强制类型转换,不存在隐式转换这么一说,语法格式如下:
T(表达式)
int(3.14)
拓展小知识
fmt常用点位符
我们打印数据时经常会用到fmt.Printf(…)
函数及相应的点位符,那么它常用的都有哪些呢?
package main
import "fmt"
func main() {
a1 := 100
fmt.Printf("%T\n", a1) // 数据类型 int
fmt.Printf("%v\n", a1) // 数据值 100
fmt.Printf("%b\n", a1) // 二进制
fmt.Printf("%d\n", a1) // 十进制
fmt.Printf("%o\n", a1) // 八进制
fmt.Printf("%x\n", a1) // 十六进制
a2 := "hello"
fmt.Printf("%s\n", a2) // 字符串值 hello
fmt.Printf("%#v\n", a2) // 带类型的数据值 "hello"
fmt.Printf("%c\n", 'B') // 字符 B
}