虽然从底层而言,所有的数据都是由比特组成,但计算机一般操作的是固定大小的数,如整数、浮点数、比特数组、内存地址等。进一步将这些数组织在一起,就可表达更多的对象,例如数据包、像素点、诗歌,甚至其他任何对象。Go语言提供了丰富的数据组织形式,这依赖于Go语言内置的数据类型。这些内置的数据类型,兼顾了硬件的特性和表达复杂数据结构的便捷性。
基本类型汇总 基本数据类型 长度(字节) 默认值 说明bool 1 false
byte 1 0 uint8
rune 4 0 Unicode Code Point, int32
int, uint 4或8 0 32 或 64 位
int8, uint8 1 0 -128 ~ 127, 0 ~ 255,byte是uint8 的别名
int16, uint16 2 0 -32768 ~ 32767, 0 ~ 65535
int32, uint32 4 0 -21亿~ 21亿, 0 ~ 42亿,rune是int32 的别名
int64, uint64 8 0
float32 4 0.0
float64 8 0.0
complex64 8
complex128 16
uintptr 4或8 以存储指针的 uint32 或 uint64 整数
复杂数据类型 长度(字节) 默认值 说明
array 值类型
struct 值类型
string "" UTF-8 字符串
slice nil 引用类型
map nil 引用类型
channel nil 引用类型
interface nil 接口
function nil 函数
布尔类型
布尔型的值只可以是常量 true 或者 false
简单定义:
两个相同类型的值可以通过 == 或者 != 等比较运算符号来获得一个布尔类型的值。
布尔值并不会隐式转换为数字值0或1,反之亦然。必须使用一个显式的if语句辅助转换:
// 布尔类型转换为0或者1 func btoi(b bool) int{ if b { return 1 } return 0 } // 数字转换为布尔类型 func itob(i int) bool { return i != 0 } 整形Go语言中整形被分为三大类:int 、uint、uintptr
这三种类型的长度是跟据程序所在的操作系统来决定长度的:
int 和 uint 在32位操作系统上,它们使用32位,4个字节,在64拉操作系统上,它们使用64位,8个字节。
uintptr 的长度被设定为存储指针的 uint32 或 uint64 整数
int 和uint又被称为有符号整形和无符号整形
有符号整形:
int8(-128 -> 127)
int16(-32768 -> 32767)
int32(-2,147,483,648 -> 2,147,483,647)
int64(-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)
无符号整形:
uint8(0 -> 255)
uint16(0 -> 65,535)
uint32(0 -> 4,294,967,295)
uint64(0 -> 18,446,744,073,709,551,615)
用不同的进制来表示整数:
十进制:
二进制:
var Binary int = 0b1100八进制:
var Octal int = 0o14十六进制:
var Hexadecimal int = 0xc用fmt.printf()函数进行输出:
func main() { var Decimal int = 12 var Binary int = 0b1100 var Octal int = 0o14 var Hexadecimal int = 0xCvar fmt.Printf("10进制数 %d 表示的是: %d \n", Decimal, Decimal) //12 fmt.Printf("2进制数 %b 表示的是: %d \n", Binary, Binary) //12 fmt.Printf("8进制数 %o 表示的是: %d \n", Octal, Octal) //12 fmt.Printf("16进制数 %X 表示的是: %d \n", Hexadecimal, Hexadecimal) //12 }跟据上面的输出可以发现,在Go语言中使用二进制、八进制、十六进制 非常的方便,只需要在数字前面加上:0b、0o、0x 就可以使用。
补充:
fmt.Printf() 函数据的格式化功能: