Mastering Go 程序基本结构体
Chapter3
for-loop
允许指定迭代次数
数组、切片、映射、字符串
形式1
for i := 0; i < 10; i++ {
}
注意
break 退出循环
continue 跳出当次循环,进行下一次循环判断
形式2
// while
for condition {
}
// forever-loop
for {
}
// do-while
for ok := true; ok; ok = someExpression {
}
形式3
不需要知道长度
返回值中有索引
for k, v := range collection {
}
Slice
切片的底层是数组, 不需要指定长度
切片的零值是nil
声明
s := []int{1, 2, 3, 3}
s := make([]int, 20)
注意:自动初始化为类型的零值
make
注意:自动初始化为类型的零值
s := make([]int, 20)
appned
注意:nil的切片是可以append的
s := make([]int, 20)
s = append(s, 1)
log.Println(s)
s = append(s, []int{1, 2, 3}...)
log.Println(s)
subSlice
获取同一个切片或者数组的sub时,共享同样的底层数组
返回的切片指向底层数组
s[1:3]
len and cap
len获取元素个数、cap获取切片容量
len(s)
cap(s)
字节切片
bs := make([]byte, 1024)
a := []int{1, 2, 3, 4, 5, 6}
b := []int{7, 8, 9, 10}
copy(a, b)
log.Println(a)
log.Println(b)
copy
a := []int{1, 2, 3, 4, 5, 6}
b := []int{7, 8, 9, 10}
copy(a, b)
log.Println(a)
log.Println(b)
sort.Slice(s, func(i, j int) bool {
return s[i] > s[j]
})
Map
nil Map 无法操作
var m map[string]string
log.Println(m)
m["key"] = "value" // panic: assignment to entry in nil map
const
常量值无法改变、数字、字符串、布尔
通常是全局变量,不使用也不会报错
常量定义无须声明类型,编译器自动判断
常量最好定义到一个包中
const VERSION = "1.15.5"
iota
每定义一个常量,iota+1
遇到定义一个const,iota重置0
iota是int类型可以参与运算
const (
zaro = iota
one
two
three
)
const (
B = 1 << (iota * 10)
KB
MB
GB
)
const (
a = iota
_ // 跳过声明
c
_
e
)
Pointer
指针即是地址
&获取非指针变量的地址
* 获取指针的值,也称为指针的解引用
指针可以作为参数也可以作为返回值
Time and Date
-
基本操作
t := time.Now()
log.Println(t.Weekday(), t.Year(), t.Month(), t.Day())
log.Println(t.Unix()) // unix时间是19701月1日以来的秒数
// 时间格式化
log.Println(t.Format("20060102150405"))
loc , _ := time.LoadLocation("Asia/Shanghai")
localTime := t.In(loc)
log.Println(localTime)
-
解析时间
解析字符串为时间对象,然后按照需要获取其中的变量,或者再次格式化为需要的字符串
// 解析字符串为时间对象, 第一个参数是时间解析的一系列常量
d, _ := time.Parse(time.UnixDate, "Wed Feb 25 11:06:39 PST 2015")
log.Println(d.Hour(), d.Minute())
log.Println(d.Format("2006/01/02"))
-
解析日期
d, _ = time.Parse("02 January 2006", "12 January 2020")
log.Println(d.Year(), d.Month(), d.Day())
log.Println(d.Format("2006/01/02"))
特殊的时间格式化字符串 2006 01 02 15 04 05
const Format = "2006/01/02 15:04:05"
1
感谢关注!https://github.com/GodYao-Go

浙公网安备 33010602011771号