这是我参与 第五届青训营 伴学笔记创作活动的第1天
一、本堂课重点内容:
- go语言基础语法
二、详细知识点介绍:
本堂课介绍了go语言的变量与常量的声明、循环与判断语句、数组与切片、Map等内容。
2.1 变量与常量的声明
变量声明
//声明变量a为string类型,没有初始化,此时a值为空串
var a string
//为a赋值
a = "a"
//声明的同时赋初值
var a string = "a"
//根据值自行判断变量类型
var a = "a"
//等价 var a="a"
a := "a"
常量声明就是将var换成const,常量可以根据赋的初值确定其类型。
const s string = "123"
const b = 123
const c= b+1
2.2 循环与判断语句
if后可以直接跟判断表达式,无需小括号,但if要带上大括号,if中的多条语句不能直接写在同一行。
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
if 8%4 == 0 {
fmt.Println("8 is divisible by 4")
}
if num := 9; num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
go的循环语句只有for语句,for语句可以使用三段表达式的写法类似java。
for语句的循环体中可以使用break和continue关键字。
break表示跳出循环,continue表示终止本轮循环开启下轮循环。
for后没有判断表达式,表示死循环。
for {
fmt.Println("死循环")
break
}
for n := 0; n < 5; n++ {
if n%2 == 0 {
continue
}
fmt.Println(n)
}
switch多分支结构,当变量值与case匹配后会执行对应的分支语句,执行完该case的分支语句后会自动退出switch结构。
a := 123
switch a {
case 12:
fmt.Println("12")
case 23:
fmt.Println("23")
case 123:
fmt.Println("123")
case 123,456:
fmt.Println("123 or 456")
default:
fmt.Println("other")
}
2.3 数组与切片
数组的长度固定,通过下标访问其元素。
切片是动态数组,可以通过make函数创建切片,append追加元素对其扩容,使用copy函数在两个切片间拷贝数据,也可像python一样通过设置起始位置、结束位置、步长来截取切片。
s := make([]string, 3)
s[0] = "1"
s[1] = "2"
s[2] = "3"
s = append(s, "d")
c := make([]string, len(s))
copy(c, s)
fmt.Println(s[1:3]) //包头不包尾
fmt.Println(s[:3])
fmt.Println(s[1:])
g1 := []string{"g", "1"}
fmt.Println(g1)
2.4 Map
Map是一种无序的键值对的集合。
Map是通过key来快速检索value。
Map可以通过deete函数删除键值对。
当要判断访问的键值对是否存在时,可以通过获取错误信息,判断错误信息是否为nil来确定键值对是否存在。
m := make(map[string]int)
m["1"] = 1
m["2"] = 2
fmt.Println(m["1"]) // 1
fmt.Println(m["4"]) // 0 对于map中不存在的键值对,得到的就是空值
v1, err := m["4"]
fmt.Println(v1, err) // 0 false
delete(m, "1") //删除map中的键值对
m2 := map[string]int{"one": 1, "two": 2}
var m3 = map[string]int{"one": 1, "two": 2}
fmt.Println(m2, m3)
三、总结
通过本堂课我学习了一些go语言的基础语法,对go语言的循环判断语句、数组切片、Map等内容有了粗浅的了解。之后我还会继续学习go的结构体、指针、错误处理等内容。