go 的基本数据类型和结构

// 变量命名方式
当用两个或两个以上的单词命名变量时,可以将除第一个单词以外的所有单词的首字母大写
package 命名方式
全部小写
不加 _

布尔类型:bool
整型:int8、byte、int16、int、uint、uintptr 等
浮点类型:float32、float64
复数类型:complex64、complex128
字符串:string
字符类型:rune
错误类型:error

Go 语言也支持以下这些复合类型:
指针(pointer)
数组(array) len() 数组长度
切片(slice) make(type, i, j) type为类型 i创建一个初始元素个数为i的数组切片 j预留 j 个元素的存储空间(容量为j) len()返回切片的长度 cap() 返回存储空间长度
字典(map)
通道(chan)
结构体(struct)
接口(interface)

time包
Now() 当前时间
Date(year, month, day, day ...)指定时间
(T time)Format("2006/1/2 15:04:05") 格式化
Parse() string -> time

file的操作
os.Stat 打开文件
file.Name() 文件名
file.Size() 大小
IsDir


数据类型: 整型及运算符

类型 长度(单位:字节) 说明 值范围 默认值
int8 1 带符号8位整型 -128~127 0
uint8 1 无符号8位整型,与 byte 类型等价 0~255 0
int16 2 带符号16位整型 -32768~32767 0
uint16 2 无符号16位整型 0~65535 0
int32 4 带符号32位整型,与 rune 类型等价 -2147483648~2147483647 0
uint32 4 无符号32位整型 0~4294967295 0
int64 8 带符号64位整型 -9223372036854775808~9223372036854775807 0
uint64 8 无符号64位整型 0~18446744073709551615 0
int 32位或64位 与具体平台相关 与具体平台相关 0
uint 32位或64位 与具体平台相关 与具体平台相关 0
uintptr 与对应指针相同 无符号整型,足以存储指针值的未解释位 32位平台下为4字节,64位平台下为8字节 0

注:++ 或 -- 只能出现在语句中,不能用于表达式,故不参与优先级判断。

go for 循环中 最好还是用 range
for i, ch := range str

自带的strconv 包

查看 接口 go doc strconv
常用的
string和int的转换
int转换为字符串:Itoa()
string转换为int:Atoi() func Atoi(s string) (int, error)

Parse类函数
Parse类函数用于转换字符串为给定类型的值:ParseBool()、ParseFloat()、ParseInt()、ParseUint()。

Format类函数
将给定类型格式化为string类型:FormatBool()、FormatFloat()、FormatInt()、FormatUint()。

Append类函数
AppendTP类函数用于将TP转换成字符串后append到一个slice中:AppendBool()、AppendFloat()、AppendInt()、AppendUint()。


q := strconv.Quote("Hello, 世界") // 为字符串加引号
q := strconv.QuoteToASCII("Hello, 世界") // 将字符串转化为 ASCII 编码


字典类型的声明、初始化和基本使用

type Integer int
注意,这个时候 Integer 已经是一个新的类型了,这与 type Integer = int 不同,后者只是为 int 类型设置一个别名。

通过 channel 进行消息传递

通道看作是一个先进先出(FIFO)的队列,通道中的元素会严格按照发送顺序排列,继而按照排列顺序被接收,通道元素的发送和接收都可以通过 <- 操作符来实现,发送时元素值在右,通道变量在左
ch <- 1 // 表示把元素 1 发送到通道 ch
接收时通道变量在右,可以通过指定变量接收元素值
element := <-ch

defer
延迟函数调用的用法
func main(){
defer func() { fmt.Println("延迟调用") }()
fmt.Println("正常调用")
}
正常代码
延迟调用

func main(){
defer func() { fmt.Println("延迟调用1") }()
defer func() { fmt.Println("延迟调用2") }()
fmt.Println("正常代码")
}
正常代码
延迟调用2
延迟调用1
url: https://blog.csdn.net/java_code_net/article/details/94976939

存储类型
值类型: int float string bool array struct
引用类型:slice(切片) map

指向数组的指针 可以直接p[]

通道
ch := make(chan int) // 双向通道
ch2 := make(chan <- int) // 单向 只能写 不能读
ch3 := make(<- chan int) // 单向 只能读 不能写

posted on 2019-12-13 09:35  JKHao  阅读(257)  评论(0编辑  收藏  举报

导航