内置类型
值类型:
bool
int(32 or 64), int8, int16, int32, int64
uint(32 or 64), uint8(byte), uint16, uint32, uint64
float32, float64
string
complex64, complex128
array // 固定长度的数组
引用类型:(指针类型)
slice // 序列数组(最常用)
map // 映射
chan // 管道
内置函数
Go 语言拥有一些不需要进行导入操作就可以使用的内置函数。
它们有时可以针对不同的类型进行操作,例如:len
、cap
和 append
,或必须用于系统级的操作,
例如:panic。
因此,它们需要直接获得编译器的支持。
append // 用来追加元素到数组、slice中,返回修改后的数组、slice
close // 主要用来关闭channel
delete // 从map中删除key对应的value
panic // 停止常规的goroutine (panic和recover:用来做错误处理)
recover // 允许程序定义goroutine的panic动作
real // 返回complex的实部 (complex、real imag:用于创建和操作复数)
imag // 返回complex的虚部
make // 用来分配内存,返回Type本身(只能应用于slice, map, channel)
new // 用来分配内存,主要用来分配值类型,比如int、struct。返回指向Type的指针
cap // capacity是容量的意思,用于返回某个类型的最大容量(只能用于切片和 map)
copy // 用于复制和连接slice,返回复制的数目
len // 来求长度,比如string、array、slice、map、channel ,返回长度
print、println // 底层打印函数,在部署环境中建议使用 fmt 包
基本类型介绍
类型 | 长度(字节) | 默认值 | 说明 |
---|---|---|---|
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 | 函数 |
数字
数字类型
Golang数据类型介绍
- Go 语言中数据类型分为:基本数据类型和复合数据类型
- 基本数据类型有:
- 整型、浮点型、布尔型、字符串
- 复合数据类型有:
- 数组、切片、结构体、函数、map、通道(channel)、接口
整型分为两大类
有符号整形按长度分为:int8
、int16
、int32
、int64
对应的无符号整型:uint8
、uint16
、uint32
、uint64
关于字节:
- 字节也叫 Byte,是计算机数据的基本存储单位。8bit(位)=1Byte(字节)
- 1024Byte(字节)=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB 。
- 在电脑里一个中文字是占两个字节的。
数字定义
定义数字类型
package main
import "fmt"
func main() {
var a int8 = 4
var b int32 = 4
var c int64 = 4
d := 4
fmt.Printf("a: %T %v \n", a, a)
fmt.Printf("b: %T %v \n", b, b)
fmt.Printf("c: %T %v \n", c, c)
fmt.Printf("d: %T %v \n", d, d)
}
/*
a: int8 4
b: int32 4
c: int64 4
d: int 4
*/
reflect.TypeOf
查看数据类型
package main
import (
"fmt"
"reflect"
)
func main() {
c := 10
fmt.Println(reflect.TypeOf(c)) // int
}