go语言的变量的使用篇二

一、整数类型基本使用

简单的说,整数类型就是用于存放整数值的。在go语言中,整数类型分为有符号数和无符号数(和C语言类似),表示有符号数和无符号数的方式也和C语言类似,例如使用u前缀表示无符号数。

与C语言不同的是,go语言采用了更为简单明了的表示方法,将整数占用的最大的位的长度直接反映在类型之中,例如int16标识使用的十六位存储的有符号数等。

类型有无符号数占用存储空间可表示的数的范围
int8一个字节-2^7~2^7-1
int16两个字节-2^15~2^15-1
int32四个字节-2^31~2^31-1
int64八个字节-2^63~2^63-1
uint8一个字节0~2^8-1
unit16两个字节0~2^16-1
unit32四个字节0~2^32-1
uint64八个字节0~2^64-1
int

跟操作系统相关

32位占用四个字节

64位占用八个字节

-2^31~2^31-1

-2^63~2^63-1

uint

跟操作系统相关

32位占用四个字节

64位占用八个字节

0~2^32-1

0~2^64-1

rune

与int32等价

表示一个Unicode码

-2^31~2^31-1
byte

与uint8等价

当要存储字符时选用byte

0~2^8-1

下面是对上述的一个简单的使用

package main
import "fmt"

func main() {

	// 测试一下int8的范围
	// 其他的int64 int32 int16类似
	var i int8 = 127
	// 如果使用如下的方式 那么会提示下面的错误码
	// constant 128 overflows int8
	// var i int8 = 128
	fmt.Println("i = ", i)

	// 测试一下uint8的范围
	// 其他的uint16 uint32 uint64类似
	var j uint8 = 255
	// 同样的 如果使用溢出 在运行时也会提示溢出
	// 如果使用如下的方式 那么会提示下面的错误码
	// constant 256 overflows uint8
	// var j uint8 = 256
	fmt.Println("j = ", j)
}

二、整型的使用细节

① go语言的整型默认声明为int型

② 可以使用fmt.Printf() 函数以及 %T 配合打印数据的类型以及使用unsafe包下的Sizeof函数打印数据占用的字节的大小

③ go程序中建议在使用整型变量的时候,遵守“保小不保大”的方式使用整数的数据类型,即在保证正确的情况下,尽量使用占用空间小的数据类型。

package main
// import "fmt"
// import "unsafe"

// 在真正的使用中 推荐使用如下的导包的方式
import (
	"fmt"
	"unsafe"
)

func main() {
	// 整型的使用细节
	// n1是什么数据类型?j
	var n1 = 100
	// 使用如下的方式可以查看变量的使用类型
	fmt.Printf("n1' type is %T \n", n1)

	// 使用如下的方式可以查询变量占用的字节数
	var n2 int64 = 64
	fmt.Printf("n2' type is %T and n2's size is %d", n2, unsafe.Sizeof(n2))
}

三、浮点类型的使用

浮点数类型是用来存放小数类型的数据,例如1.2,3.14等。同C语言,浮点数也有单精度浮点数与双精度浮点数,不过,go语言采用的命名的类型的方式与整数有相类似的地方,例如使用占用的位数的大小来分别的表示单精度(float32)和双精度(float64)。

简单对浮点数进行说明:

① 浮点数在内存中的存储的方式是 符号为+指数位+尾数位

float32:1位符号位+8位指数位+23位尾数

float64:1位符号位+11位指数位+52位尾数

② 在进行小数存储时,会发生尾数无法完整放入表示的数时,会导致精度的丢失

四、浮点型的使用细节

① 浮点数时固定的长度和固定的范围,不受操作系统的影响

② 与C语言类似,go语言的默认的浮点数类型默认是float64

③ 在使用时,通常情况下建议使用float64,可以拥有更大的精度

package main
import (
	"fmt"
)

func main() {
	
	var price float32 = 3.14
	fmt.Println("price = ", price)

	// go语言浮点数默认的类型是float64
	var num = 4.57
	fmt.Printf("num's type is %T", num)
}

五、字符类型基本介绍

与C语言不同,go语言中没有专门保存单个字符的字符类型(C语言中采用char进行表示),所以go语言中使用byte进行字符的保存。在go语言中,字符串表示一串固定的字符连接起来的字符序列,go语言的字符串是由单个的字节连接起来的;与传统的字符串的组成方式不同,go语言中的字符串是由字节构成的,在传统语言中使用的是字符构成的字符串。

六、字符类型使用细节

① 字符常量是使用的单引号('')括起来的字符,例如'a','中'

② 在go语言中使用的Unicode编码集进行的编码(使用的是utf-8的编码)

③ go语言中允许使用转义字符'\'将普通的字符转义为特殊的字符,例如'\n'表示换行符

④ 在go语言中,字符本身是一个整数,当直接使用时,使用的是码值;如果要打印该字符,那么应该使用格式化输出fmt.Printf()配合%c进行字符的输出

⑤ 字符类型是一个整数,可以进行整数类型可以参与的运算,在参与运算时,使用的是字符的Unicode的码值进行的运算

package main
import (
	"fmt"
)

func main() {
	
	var c1 byte = 'a'
	var c2 byte = '0'
	// 如下直接使用byte的值 会直接将字符的ascii对应的码值进行输出
	fmt.Println("c1 = ", c1, ", c2 = ", c2)

	// 使用格式化输出的方式才可以正确的打印字符
	fmt.Printf("c1 = %c, c2 = %c\n", c1, c2)

	// 如果被表示的字符超出了byte的上限 会发生溢出
	// constant 19978 overflows byte
	// var c3 byte = '上' 
	// 要想完整的表达这个数 那么就需要使用可以存储该字符的数据类型
	var c3 int = '上' 
	fmt.Printf("c3 = %c\n", c3)
	
	var c4 int = 0x56FD;
	fmt.Printf("c4 = %c\n", c4)

	// 字符类型可以自己参与运算 在参与运算时使用的是自身的Unicode对应的码值
	var c5 byte = 'A'
	c5 = c5 + 32
	fmt.Printf("c5 = %c\n", c5)
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值