1.GO基础语法 | 青训营笔记

47 阅读2分钟

这是我参与 \lceil第五届青训营\rfloor 伴学笔记创作活动的第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的结构体、指针、错误处理等内容。