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
int81字节-128~127byte
int162字节-2^15~2^15-1short
int324字节-2^31~2^31-1int
int648字节-2^63~2^63-1long

无符号整数

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需要存储字符时使用

浮点类型

类型占用储存控件取值范围
单精度float324字节-3.403E38~3.403E38
双精度float648字节-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:基本数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Golang的基本数据类型-基本使用

golang代码片段(摘抄)

golang之基本数据类型

Golang 基本数据类型

Golang:指针以及内存布局

Golang:指针以及内存布局