(一)整数类型

整数的各个类型

整型的使用细节

1) Golang 各整数类型分:有符号和无符号,int uint 的大小和系统有关。

2) Golang 的整型默认声明为 int 型

3) 如何在程序查看某个变量的字节大小和数据类型 (使用较多)

4) Golang程序中整型变量在使用时,遵守保小不保大的原则,即:在保证程序正确运行下,尽量
使用占用空间小的数据类型。【如:年龄】

5) bit: 计算机中的最小存储单位。byte:计算机中基本存储单元。[二进制再详细说] 1byte = 8 bit

代码

package main

import (
	"fmt"
	"unsafe"
)

func main() {
	// golang整数使用细节

	var a int32 = 2
	fmt.Println("a=", a)

	// var b uint = -1
	// 提示:constant -1 overflows uint 溢出
	// fmt.Println("b=", b)

	var c byte = 1
	fmt.Println("c=", c)

	// 提示:constant 256 overflows byte
	// var c byte = 256
	// fmt.Println("c=", c)

	var n = 100 // n是什么类型
	//fmt.Printf可以用作格式化输出
	fmt.Printf("n 的类型是: %T \n", n)

	// 如何在变量查看某个变量占用内存的大小和数据类型 (使用较多)
	var d int64 = 2888
	fmt.Printf("d的数据类型是: %T  d的占用内存大小为:%d 个字节 \n", d, unsafe.Sizeof(d))

	// golang程序在运行过程中遵循保小不保大的原则
	// 在保持程序正确顺行的情况下 尽量使用占用空间比较少的数据类型
	var age byte = 123
	fmt.Println("张三的年龄", age)
}

(二) 字符类型

func main() {
	var a byte = 'a'
	var b byte = '0'
	// 输出 a =  97 b =  48
	fmt.Println("a = ", a, "b = ", b)
	// 如果希望输出字符
	fmt.Printf("a = %c b = %c", a, b)

	var c int = '北'
	// 输出d =  21271
	fmt.Println("\nc = ", c)

	var d byte = '北'
	// 输出 constant 21271 overflows byte
	fmt.Println("\nd = ", d)
}

对上面代码说明
1) 如果我们保存的字符在 ASCII 表的,比如[0-1, a-z,A-Z..]直接可以保存到 byte
2) 如果我们保存的字符对应码值大于 255,这时我们可以考虑使用 int 类型保存
3) 如果我们需要安装字符的方式输出,这时我们需要格式化输出,即 fmt.Printf(“%c”, c1)..

字符类型使用细节

1) 字符常量是用单引号(”)括起来的单个字符。例如:var c1 byte = ‘a’ var c2 int = ‘中’ var c3
byte = ‘9’

2) Go 中允许使用转义字符 ‘\’来将其后的字符转变为特殊字符型常量。例如:var c3 char = ‘\n’
// ‘\n’表示换行符

3) Go 语言的字符使用 UTF-8 编码 ,如果想查询字符对应的 utf8 码值
http://www.mytju.com/classcode/tools/encode_utf8.asp

英文字母-1个字节 汉字-3个字节
4) 在 Go 中,字符的本质是一个整数,直接输出时,是该字符对应的 UTF-8 编码的码值。
5) 可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的 unicode 字符

6) 字符类型是可以进行运算的,相当于一个整数,因为它都对应有 Unicode 码.

字符类型本质探讨

1) 字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来
存储:字符—>对应码值—->二进制–>存储
读取:二进制—-> 码值 —-> 字符 –> 读取

2) 字符和码值的对应关系是通过字符编码表决定的(是规定好)
3) Go语言的编码都统一成了utf-8。非常的方便,很统一,再也没有编码乱码的困扰了

(三) 浮点类型

1>关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位

2>尾数部分可能丢失,造成精度损失 -123.0000901

3>浮点数的存储分为三部分,符号位+指数位+尾数位,造成精度丢失

func main() {
	var num1 float32 = -123.0000901
	var num2 float32 = 123.0000901
	var num3 float64 = 123.0000901
	fmt.Println("num1=", num1, "num2=", num2, "num3=", num3)
	//输出num1= -123.00009 num2= 123.00009 num3= 123.0000901
}

发表评论

电子邮件地址不会被公开。