这几天自己学习了有关GO的基础语法,下面对前面一些基础部分做个总结:
一.变量
1.显式的变量声明
通常是 var关键字 + 变量名 + 变量基本类型,可以对其进行初始化,也可以不指定初始值,不指定初始值就会将该变量初始化成该类型的默认零值。同时,Go支持多变量声明,不指定基本类型时自动执行类型判断
var number int //单变量声明
fmt.Println("My number is", number)
number = 32
var width, height int //多变量声明,此时int类型默认值为0
fmt.Println(width) //0
fmt.Println(height) //0
var s = "hello world" //自动执行类型判断s为字符串类型
fmt.Println(name) //hello world
2.短声明
变量名 := value,在Go中有自动判别类型机制,那么短声明就起到一个简化代码的作用,值得注意的是该类声明需要左边一定有新变量声明才能使用,下面通过两个对比例子来说明:
a, b := 20, 30 //a = 20,b = 30
fmt.Println("a is", a, "b is", b)
b, c := 40, 50 //b = 40,c = 50
fmt.Println("b is", b, "c is", c)
在该例子中虽然短声明了两次变量b,但第二次声明变量b时同时声明了新变量c,所以该段代码不会报错
a,b := 10,10 //a = 10,b = 10
fmt.Println(a + b) //20
b := 30 //该变量声明不合法
在该例子中第二次用短声明对变量b重新赋值是不合法的,因为短声明左边并没有新变量声明,此时编译器会报 " ':='的左侧没有新变量 " 错误
二:if -else结构
Go的if else结构和其他语言基本没什么差别,基本写法如下:
if condition{
}else{
}
由于GO的if-else和Java、C++等语言基本没什么差别,在这里就说明一点:else 应在if语句的}同一行开始,另起一行是不合法的
//正确写法
num := 26
if num % 2 == 0 {
fmt.Println("num is even")
} else {
fmt.Println("num is odd")
}
//错误写法
num := 26
if num%2 == 0 {
fmt.Println("num is even")
}
else {
fmt.Println("num is odd")
}
导致这样的原因就是Go有自动插入分号的方式,这是我们在写if-else语句需要注意的地方
三:循环
普通的for循环同样和其他语言差不多,这里简单说一下通过range关键字,可以在for循环里使用迭代数组、切片、集合等里面的元素
var a = [6]int{0, 1, 2, 3, 4, 5}
for i, v := range a {
fmt.Printf("index :%v,value :%v\n", i, v)
}
在该段代码中i代表数组下标,v代表下标对应的值,如果想只遍历值只需将"i"改成"_" 即可
四:switch语句
和if-else语句一样,同样是一个条件语句,它对表达式进行求值并将其与可能的匹配列表进行比较,并执行相应的代码块。
package main
import (
"fmt"
)
func main() {
a := 2
switch a {
case 1:
fmt.Println(26)
case 2:
fmt.Println(65)
case 3:
fmt.Println(98)
case 4:
fmt.Println(100)
}
}
//输出65
switch语句中不允许有重复的语句,且可以有默认分支,不同于其他一些语言,Go语言的switch语句没有穿透能力,如以上这段代码执行第二个分支时,程序不会继续执行第二个分支以下的分支