这是我参与「第五届青训营 」笔记创作活动的第4天
这篇文章主要是对第一阶段学习Go语言知识的巩固和课后思考。
1.Go语言基础入门
对于Go语言的初学者来说,学习Go语言需要从Go语言的基础知识进行学习,其基础语法主要有:变量、if else、switch、数组、切片、map、range、函数、指针、结构体等。
下面将主要对几个主要的基础语法进行实例展示,同时提出自己的一些想法。
1.1 基础语法-变量
package main
import (
"fmt"
"math"
)
func main() {
var a = "initial"
var b,c int = 1,2
var d = true
var e float64
f := float32(e)
g := a + "foo"
fmt.Println(a,b,c,d,e,f) // initial 1 2 true 0 0
// initialapple
const s string = "constant" //const定义的固定常量
const h = 50000000
const i = 3e20 / h
fmt.Println(s,h,i,math.Sin(h), math.Sin(i))
}
复制代码
上述的变量主要分为定义的变量,给予其一个特定的值,其中需要注意的是const为定义的固定常量。
1.2 基础语法-if else
package main
import "fmt" //导入包的语句为import
func main() {
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
} //if,else循环语句
if 8%4 == 0 {
fmt.Println("8 is divisible by 4")
} //if语句
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")
}
} // 两个嵌套的if...else语句
复制代码
对于简单的循环语句if else,这里分为三个类型,分别为:if,else循环语句、简单的if语句和两个嵌套的if...else语句。
1.3 基础语法-switch
package main
import (
"fmt"
"time"
)
func main(){
a := 2 //定义的符号:=为赋值符号
switch a {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
case 3:
fmt.Println("three")
case 4,5:
fmt.Println("four or five")
default:
fmt.Println("other")
}
t := time.Now()
switch{
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
}
复制代码
对于switch语句,为了更加方便读者理解,这边通过C语言中的switch语句进行介绍:
switch语句是开关语句,一般与case、break、default配合使用,对流程进行控制。
在一个switch中可以有任意数量的case语句。每个case语句后跟一个要比较的值和一个冒号。
case后的类型必须与switch中的变量具有相同的数据类型,且必须是一个常量或字面量。
当被测试的变量等于case中的常量时,case后跟的语句将被执行,直到遇到break语句为止。
当遇到break语句时,switch终止,控制流将跳转到switch语句后的下一行。
不是每一个case都需要包含break。如果case语句不包含break,控制流将会继续后续的case,直到遇到break为止。
一个switch语句可以有一个可选的default,出现在switch的结尾。default case可用于在上面所有case都不为真时执行一个任务。default case中的break语句不是必须的。
1.4 数组
package main
import "fmt"
func main() {
var a [5]int
a[4] = 100
fmt.Println(a[4],len(a))
b := [5]int{1,2,3,4,5}
fmt.Println(b)
var twoD [2][3]int
for i := 0; i < 2; i++ {
for j := 0;j < 3;j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}
复制代码
由于在学习这节课过程中,自己对数组的知识有些遗忘,为了更好的巩固,我通过查阅资料进行了重新学习,数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,因此,数组在Go语言中比较少用。
数组变量名:数组声明及使用时的变量名。
元素数量:数组的元素数量,可以是一个表达式,但最终通过编译期计算的结果必须是整型数值,元素数量不能含有运行时才能确认大小的数值。
1.5 基础语法-切片
package main
import "fmt"
func main() {
s := make([]string, 3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println("get:", s[2]) // c
fmt.Println("len:",len(s)) // 3
s = append(s, "d")
s = append(s, "e", "f")
fmt.Println(s) // [a b c d e f]
c := make([]string, len(s))
copy(c, s)
fmt.Println(c) // [a b c d e]
fmt.Println(s[2:5]) // [c d e]
fmt.Println(s[:5]) // [a b c d e]
fmt.Println(s[2:]) // [c d e f]
good := []string{"g", "o" , "o" , "d"}
fmt.Println(good) // [g o o d]
}
复制代码
对于切片,切片是对数组的一个连续片段的引用,所以切片是一个引用类型,这个片段可以是整个数组,也可以是由起始和终止索引标识的一些项的子集,需要注意的是,终止索引标识的项不包括在切片内。
Go语言中切片的内部结构包含地址、大小和容量,切片一般用于快速地操作一块数据集合。
2.Go语言安装
这节主要介绍一些注意事项:
- 安装Go语言时候,文件名称不可以使用中文
- 运行Go语言时候,需要将Go语言进行配置,特别是环境要配置好,需要熟悉Go语言代码的使用
总结
在经过三天的课程学习后,我深刻的感受到了作为一名码农,需要注意的细节比较多,我们不仅仅要注重课堂的学习,同时要加强课后的巩固和练习。代码的应用也特别重要,很多时候仅仅了解理论知识是不够的,需要亲自动手写,不断在错误中改正,才能提高代码的能力!
引用
本篇文章主要来自于字节内部课的相关内容,以及百度查阅的资料。