Golang快速入门(1)| 青训营
本人有C语言和Python基础,有相同经验的人可通过此文快速上手golang或者复习golang
1.变量
-
变量声明: 在Go中,可以使用关键字
var来声明一个变量(与其他语言不同的是Golang的变量声明后必须使用)。语法为:var 变量名 类型。例如:var age int var name string -
变量赋值: 声明变量后,可以使用赋值语句为变量赋值。例如:
age = 25 name = "Alice" -
初始化声明: 声明变量的同时也可以进行初始化赋值。
-
类型推断: 在变量初始化时,Go可以根据赋值的数据类型自动推断变量的类型,无需显式指定类型。
-
:=短声明:
:=运算符用于进行短变量声明和赋值。它在变量声明的同时,根据右侧表达式的值进行类型推断,然后将值赋给变量。(与var不同,他只能在函数内部使用,用于声明和初始化局部变量 && 注意不要与python的海象运算符混淆)上面3条的例子
var age int = 25 //变量类型在ide内会提示你可以删除 var age = 25 //自动类型推断 age := 25
6.多变量声明: 可以一次性声明多个变量,并根据需要为其中的一些变量提供初始值。例如:
var a, b, c int
var x, y, z = 10, 20, 30
7.匿名变量: 在Go中,可以使用 _ 符号作为匿名变量,用于忽略某个值的赋值或返回。例如:
_, err := someFunction()
8.零值: 在Go中,未经初始化的变量会被赋予其类型的零值。例如,int 类型的零值是 0,string 类型的零值是空字符串 ""。 9.作用域: 变量的作用域限定在其声明的代码块内。函数内部声明的变量只在函数内部可见,而在函数外部声明的变量具有更大的作用域。
2.常量
1.常量声明: 与变量类似,常量在声明时需要明确指定类型(也可自动推断),但是在赋值时需要在声明的同时进行赋值,而且无法修改。例如:
const pi = 3.14159
const daysInWeek = 7
2.多常量声明: 多个常量也可以一起声明,当const声明多个常量时,如果省略了值则表示和上一行相同,例如:
const(
c1 = 10
c2
c3
)
示例中c1 c2 c3的值都是10 。
-
iota:
iota是 Go 语言中的一个预定义标识符,用于在常量声明中生成一系列连续的整数值。const ( Sunday = iota // 0 Monday // 1 Tuesday // 2 Wednesday // 3 Thursday // 4 Friday // 5 Saturday // 6 )在这个示例中,
iota在常量组内部的每一行都会递增。因此,Sunday的值为 0,Monday的值为 1,依此类推。这样,我们可以使用这些常量来更清晰地表示星期几。在iota中,我们还可以用
_跳过一些值const( n1 = iota //0 n2 //1 _ n4 //3 )iota还有更多操作,但并不常用,如需了解可以上网搜索。
3. 基本数据类型与运算符
golang的基本数据类型和其他语言大抵相同,但部分的叫法稍稍不同例如:int8、int16、int32、int64但这些不常用,常用的整形是int,常用的浮点型是float64 ,布尔值是true和false
字符串是string
golang的运算符与其他语言的相同,都有算法运算符、逻辑运算符、关系运算符、位运算符、赋值运算符。
4. if...else...
golang的if...else格式如下:
if 表达式1 {
...
} else if {
...
} else {
...
}
与其他语言不同的是左花括号{必须与if在同一行,否则会出问题,因为golang省去了;而是通过换行来表示代码为一行。
if条件判断还有一种特殊写法,在错误处理时常用,例如:
if err := MyFunc(); err != nil {
fmt.Println(err)
}
5. 循环结构
与c语言不同的是golang没有while语句,而是灵活地使用for循环来替代。
for循环的基本格式如下:
for 初始语句;条件表达式;结束语句{
循环体
}
goalng中的死循环为:
for {
循环语句
}
golang中循环语句的初始语句可忽略,例如:
i := 0
for ;i<5;i++{
fmt.Println(i)
}
golang循环中初始语句和结束欲绝都可忽略,例如:
i := 0
for i<5 {
fmt.println(i)
i++
}
此外golang还有类似python中的for range
golang可以使用for range遍历数组、切片、字符串、map和通道,到了相应部分会说明。
通过for range遍历可获取数组、切片、字符串的索引和值,map的键和值,通道内的值。
switch...case...
Golang的switch...case 和c语言的类似,但是相比c语言golang有如下特点:
不需要显式的 break: 在 C 语言中,每个 case 后面都需要使用 break 来防止执行其他的 case。但在 Go 中,每个 case 执行完毕后,会自动跳出 switch 语句,不需要显式使用 break。
支持多值匹配: 在一个 case 中可以匹配多个值。这使得在一个 case 中处理多个相关值变得更加方便。
支持表达式: 在 switch 表达式中可以使用任何类型的值,不仅限于整数类型。
下面举几个例子介绍golang的switch case:
day := "Tuesday"
switch day {
case "Monday":
fmt.Println("这是一周之首.")
case "Tuesday", "Wednesday":
fmt.Println("这是一周的中间.")
case "Thursday", "Friday":
fmt.Println("快到周末了.")
default:
fmt.Println("这是休息日.")
}
age := 20
switch {
case age < 0:
fmt.Println("错误的年龄")
case age >= 0 && age < 18:
fmt.Println("未成年")
case age >= 18 && age < 60:
fmt.Println("成年人")
default:
fmt.Println("长者")
}