Go语言基础语法01|青训营笔记

57 阅读3分钟

这几天自己学习了有关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语句没有穿透能力,如以上这段代码执行第二个分支时,程序不会继续执行第二个分支以下的分支