// 变量命名方式
当用两个或两个以上的单词命名变量时, 可以将除第一个单词以外的所有单词的首字母大写
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) // 单向 只能读 不能写
来源: http://www.bubuko.com/infodetail-3329213.html