Golang:基本数据类型
Posted 保暖大裤衩LeoLee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang:基本数据类型相关的知识,希望对你有一定的参考价值。
如何查看数据类型以及数据占用字节大小
查看数据类型
a := 2 // 或者 var a = 2
fmt.Printf("a data type:%T", a)
查看数据占用字节数
b := 2 // 或者 var b = 2
fmt.Printf("a need %d bytes\\n", unsafe.Sizeof(b))
在实际编程中,如果能确定变量的取值范围,尽量的明确指定具体的类型,减小字节占用。
整数类型
有符号整数
类型 | 有无符号 | 占用储存空间 | 取值范围 | 类比Java |
int8 | √ | 1字节 | -128~127 | byte |
int16 | √ | 2字节 | -2^15~2^15-1 | short |
int32 | √ | 4字节 | -2^31~2^31-1 | int |
int64 | √ | 8字节 | -2^63~2^63-1 | long |
无符号整数
Golang提供了无符号的整数类型
类型 | 有无符号 | 占用储存空间 | 取值范围 |
uint8 | × | 1字节 | 0~255 |
uint16 | × | 2字节 | 0~2^16-1 |
uint32 | × | 4字节 | 0~2^32-1 |
uint64 | × | 8字节 | 0~2^64-1 |
其他
类型 | 有无符号 | 占用储存空间 | 取值范围 | 备注 |
int | √ | 32位操作系统占4个字节 63位操作系统占8个字节 | -2^31~2^31-1 -2^63~2^63-1 | 如果声明整数变量没有显式指定数据类型,默认为int |
uint | × | 32位操作系统占4个字节 63位操作系统占8个字节 | 0~2^31-1 0~2^63-1 | |
rune | √ | 与int32一样 | -2^31~2^31-1 | 表示一个Unicode码 |
byte | × | 与uint8一样 | 0~255 | 需要存储字符时使用 |
浮点类型
类型 | 占用储存控件 | 取值范围 |
单精度float32 | 4字节 | -3.403E38~3.403E38 |
双精度float64 | 8字节 | -1.798E308~1.798E308 |
隐式的声明浮点类型,默认是float64
n := 3.1415926 // 或者 var n = 3.1415926
fmt.Printf("n data type:%T\\n", n)
//输出:n data type:float64
字符类型
Golang没有类似于Java char的字符类型,如果要储存单个字符(字符、符号)一般使用byte。
传统的字符串是由字符组成,对于Golang来说,字符串是由单个字节连接起来的,是由字节组成的。
var char1 byte = 'a'
char2 := 'b'
fmt.Printf("char1=%v,char2=%v\\n", char1, char2)
// %v:值的默认格式表示,这里输出:char1=97,char2=98
fmt.Printf("char1=%c,char2=%c\\n", char1, char2)
// %c:值对应的unicode码值,这里输出:char1=a,char2=b
不能使用byte存储汉字,byte范围0~255,占用一个字节,无法承载汉字。使用int即可存放:
var char3 int16 = '李'
fmt.Printf("char3=%v\\n", char3)
fmt.Printf("char3=%c\\n", char3)
//输出:
//char3=26446
//char3=李
字符类型参与运算
//字符类型可以进行运算,相当于整数参与运算,应为字符都存在其对应的Unicode码
fmt.Printf("1 + char3 = %d\\n", 1 + char3)
//输出:1 + char3 = 26447
布尔类型
bool,bool类型在go语言当中只有true或者false的取值,没有其他变成语言中的1或者是-1,更没有null值。
bbb := false
fmt.Printf("b=%t\\n", bbb) // %t:true或false
fmt.Printf("bool need %d bytes\\n", unsafe.Sizeof(bbb)) // bool占用一个字节
字符串类型
在go语言中,字符串类型属于基本数据类型。
go的字符串是由单个字节连接起来的,使用UTF-8编码表示Unicode文本。
- 使用双引号进行赋值操作,可以识别转义字符。
- 使用反引号(·)进行赋值,将可以用字符串原生形式进行输出,包括换行和特殊字符。
var city string = "上海"
fmt.Printf("city:%s\\n", city)
注意:go中的字符串是不可变的,类似于Java中的String是不可变类(不是一样的实现原理哦)。
字符串的拼接
city := "上海"
area := "浦东新区"
address := city + area + "陆家嘴"
fmt.Printf("address:%s\\n", address)
当拼接的字符串过长时,可以换行,但是+号要留在上一行,否则语法报错
str := "a" + "b" + "c" +
"d" + "e"
基本数据类型的默认值
数据类型 | 默认值 |
整数 | 0 |
浮点型 | 0 |
字符串 | ”“ |
布尔类型 | false |
以上是关于Golang:基本数据类型的主要内容,如果未能解决你的问题,请参考以下文章