社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
虽然从底层而言,所有的数据都是由比特组成,但计算机一般操作的是固定大小的数,如整数、浮点数、比特数组、内存地址等。进一步将这些数组织在一起,就可表达更多的对象,例如数据包、像素点、诗歌,甚至其他任何对象。Go语言提供了丰富的数据组织形式,这依赖于Go语言内置的数据类型。这些内置的数据类型,兼顾了硬件的特性和表达复杂数据结构的便捷性
基本数据类型 | 长度(字节) | 默认值 | 说明 |
---|---|---|---|
bool | 1 | false | |
byte | 1 | 0 | byte是uint8的别名 |
rune | 4 | 0 | Unicode Code Point,rune是int32的别名 |
int,uint | 4or8 | 0 | 32 or 64位 |
int8,uint8 | 1 | 0 | -128 ~ 127, 0 ~ 255 |
int16,uint16 | 2 | 0 | -32768 ~ 32767, 0 ~ 65535 |
int32,uint32 | 4 | 0 | -21亿~ 21亿, 0 ~ 42亿 |
int64,uint64 | 8 | 0 | |
float32 | 4 | 0.0 | |
float64 | 8 | 0.0 | |
complex64 | 8 | ||
complex128 | 16 | ||
uintptr | 4or8 | 这是一个整数类型!!!,以存储指针的uint32 or uint64整数 |
复杂类型 | 长度(字节) | 默认值 | 说明 |
---|---|---|---|
array | 值类型 | ||
struct | 值类型 | ||
string | “” | utf-8字符串 | |
slice | nil | 引用类型 | |
map | nil | 引用类型 | |
channel | nil | 引用类型 | |
interface | nil | 接口 | |
function | nil | 函数 |
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
package main
import "fmt"
func main() {
var Decimal int = 12 // 十进制
var Binary int = 0b1100 // 二进制
var Octal int = 0o14 // 八进制
var Hexadecimal int = 0x0c // 十六进制
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
}
补充整型的输出格式化:
fmt.Printf() 函数据的格式化功能:
- %b 表示为二进制
- %c 该值对应的unicode码值
- %d 表示为十进制
- %o 表示为八进制
- %q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
- %x 表示为十六进制,使用a-f
- %X 表示为十六进制,使用A-F
- %U 表示为Unicode格式:U+1234,等价于"U+%04X"
- %E 用科学计数法表示
- %f 用浮点数表示
Go语言支持两种浮点型数:float32 和 float64
这两种浮点型数据格式遵循 IEEE 754标准 :
- float32:最大值约 3.4e38,常量定义:math.MaxFloat32
- float64:最大值约 1.8e308,常量定义:math.MaxFloat64
package main
import "fmt"
func main() {
var f float64 = 3.1415926
fmt.Printf("保留两位小数:%.2f",f) //3.14
fmt.Printf("保留两位小数:%.3f",f) //3.142
}
func IntFromFloat64(x float64) int {
if math.MinInt32 <= x && x <= math.MaxInt32 {
whole, fraction := math.Modf(x)
if fraction >= 0.5 {
whole++
}
return int(whole)
}
panic(fmt.Sprintf("%g is out of the int32 range", x))
}
组成每个字符串的元素叫做字符,通过遍厉字符串或者定义单个字符可以获取,定义字符时用 ’ 包裹起来。
var testRune := '国'
var testByte := 'a'
fmt.Printf("字符的类型为:%T",testRune) //rune
fmt.Printf("字符的类型为:%T",testRune) //byte
rune 类型为 int32 的别名
byte 类型为 uint8 的别名范围为 (0~255)
var str string = "hello,世界!"
import "fmt"
func main() {
var mystr01 string = "hello"
var mystr02 [5]byte = [5]byte{104, 101, 108, 108, 111}
fmt.Printf("mystr01: %s\n", mystr01)
fmt.Printf("mystr02: %s", mystr02)
}
输出的结果为
mystr01: hello
mystr02: hello
import "fmt"
func main() {
s := "hel" + "lo,"
s += "world!"
fmt.Println(s)
//输出 “hello, world!”
}
- \n:换行符
- \r:回车符
- \t:tab 键
- \u 或
- \U:Unicode 字符
- \:反斜杠自身
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!