Loading

【go语言学习】数据类型

Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。

一、基本数据类型

1、整型

整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64

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

类型 描述
int8 有符号 8位整型 (-128 到 127)
int16 有符号 16位整型 (-32768 到 32767)
int32 有符号 32位整型 (-2147483648 到 2147483647)
int64 有符号 64位整型 (-9223372036854775808 到 9223372036854775807)
uint8 无符号 8位整型 (0 到 255)
uint16 无符号 16位整型 (0 到 65535)
uint32 无符号 32位整型 (0 到 4294967295)
uint64 无符号 64位整型 (0 到 18446744073709551615)

特殊的整型

类型 描述
int 32位操作系统上就是int32,64位操作系统上就是int64
uint 32位操作系统上就是uint32,64位操作系统上就是uint64
2、浮点型
  • float32 的浮点数的最大范围约为 3.4e38,可以使用常量定义:math.MaxFloat32
  • float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:math.MaxFloat64
3、布尔型bool

bool布尔型数据只有true(真)和false(假)两个值。
注意:

  • 布尔类型变量的默认值为false
  • Go 语言中不允许将整型强制转换为布尔型
  • 布尔型无法参与数值运算,也无法与其他类型进行转换
4、字符串类型string

Go语言中的字符串以原生数据类型出现,使用utf-8编码
字符串的定义可以使用双引号"",也可以用反引号``

s1 := "hello world"
s2 := `hello
world`

字符串转义符

转义符 含义
\r 回车符(返回行首)
\n 换行符(直接跳到下一行的同列位置)
\t 制表符
\' 单引号
\" 双引号
\\ 反斜杠

单引号'和双引号"

var a = '中'
var b = "中"
fmt.Printf("%T, %v, %c\n", a, a, a)    \\int32, 20013, 中
fmt.Printf("%T, %v\n", b, b)           \\string, 中
5、byte和rune类型

Go 语言的字符有以下两种:

  • uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。
  • rune类型,代表一个 UTF-8字符。
    当需要处理中文、日文或者其他复合字符时,则需要用到rune类型。rune类型实际是一个int32。
// 遍历字符串
s := "hello世界"
for i := 0; i < len(s); i++ {
	fmt.Printf("%v[%c] ", s[i], s[i])
}
for _, v := range s {
	fmt.Printf("%v[%c]", v, v)
}

输出:

104[h] 101[e] 108[l] 108[l] 111[o] 228[ä] 184[¸] 150[] 231[ç] 149[] 140[]
104[h]101[e]108[l]108[l]111[o]19990[世]30028[界]
6、类型转换Type Convert

语法格式:Type(Value)
常数:在有需要的时候,会自动转型
变量:需要手动转型T(V)

注意点:兼容类型才可以转换

二、复合类型

1、指针类型(pointer)
2、数组类型(array)
3、结构体类型(strutct)
4、函数类型(function)
5、切片类型(slice)
6、接口类型(interface)
7、Map类型(map)
8、管道类型(channel)

posted @ 2020-10-23 18:10  Every_dawn  阅读(128)  评论(0编辑  收藏  举报