这是我参与「第三届青训营-后端场」笔记创作活动的的第2篇笔记
目录
-
变量
-
选择
-
循环
-
数组
-
切片
-
map
-
range
-
变量 变量声明三种形式
var v1 int
var v2 int
//一次定义多个变量
var v3, v4 int
var (
v5 int
v6 int
)
变量初始化三种方式
var v1 int = 10 // 方式1
var v2 = 10 // 方式2,编译器自动推导出v2的类型
v3 := 10 // 方式3,编译器自动推导出v3的类型
fmt.Println("v3 type is ", reflect.TypeOf(v3)) //v3 type is int
//出现在 := 左侧的变量不应该是已经被声明过,:=定义时必须初始化
var v4 int
v4 := 2 //err
变量赋值
var v1 int
v1 = 123
var v2, v3, v4 int
v2, v3, v4 = 1, 2, 3 //多重赋值
i := 10
j := 20
i, j = j, i //多重赋值
go语言的常量用const修饰,可以不指定数据类型,可以自动推导。
- 选择
- if
if a == 3 { //条件表达式没有括号
fmt.Println("a==3")
}
//支持一个初始化表达式, 初始化字句和条件表达式直接需要用分号分隔
if b := 3; b == 3 {
fmt.Println("b==3")
}
- if else
if a := 3; a == 4 {
fmt.Println("a==4")
} else { //左大括号必须和条件语句或else在同一行
fmt.Println("a!=4")
}
- if ...else if ...else
if a := 3; a > 3 {
fmt.Println("a>3")
} else if a < 3 {
fmt.Println("a<3")
} else if a == 3 {
fmt.Println("a==3")
} else {
fmt.Println("error")
}
- switch 值得一提的是:go语言中的选择开关条件可以使用任何类型或表达式作为条件语句
var score int = 90
switch score {
case 90:
fmt.Println("优秀")
//fallthrough
case 80:
fmt.Println("良好")
//fallthrough
case 50, 60, 70:
fmt.Println("一般")
//fallthrough
default:
fmt.Println("差")
}
- 循环
- for
var i, sum int
for i = 1; i <= 100; i++ {
sum += i
}
fmt.Println("sum = ", sum)
- range
s := "abc"
for i := range s { //支持 string/array/slice/map。
fmt.Printf("%c\n", s[i])
}
for _, c := range s { // 忽略 index
fmt.Printf("%c\n", c)
}
for i, c := range s {
fmt.Printf("%d, %c\n", i, c)
}
4. 数组
数组是指一系列同一类型数据的集合。
数组长度必须是常量
var n int = 10
var a [n]int //err, non-constant array bound n
var b [10]int //ok
操作数组
var a [10]int
for i := 0; i < 10; i++ {
a[i] = i + 1
fmt.Printf("a[%d] = %d\n", i, a[i])
}
//range具有两个返回值,第一个返回值是元素的数组下标,第二个返回值是元素的值
for i, v := range a {
fmt.Println("a[", i, "]=", v)
}
- 切片 Go语言提供了数组切片(slice)来弥补数组的不足。
var s1 []int //声明切片和声明array一样,只是少了长度,此为空(nil)切片
s2 := []int{}
//make([]T, length, capacity) //capacity省略,则和length的值相同
var s3 []int = make([]int, 0)
s4 := make([]int, 0, 0)
s5 := []int{1, 2, 3} //创建切片并初始化
注意:make只能创建slice、map和channel,并且返回一个有初始值(非零)。
-
map Go语言中的map(映射、字典)是一种内置的数据结构,它是一个无序的key—value对的集合 格式:map[keyType]valueType
-
range 见循环部分
这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记 青训营开办第2课《Go 语言上手 - 基础语言》讲解了go的基础语法,但是内容较多,对于一个零接触转go语言的选手来说,一下子消化不完,剩下的部分需要继续学习整理。
剩下相关一些基础语法:例如指针、结构体、格式转换等还需要稍加学习。
这一节课还引入了许多以前从未接触过的东西,感受到了go语言的便捷和强大之处。