跟着课程思路简易学习Go——Go基本语法(一) | 青训营笔记

58 阅读3分钟

Go基本语法

1.变量声明

Go语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。

  • 变量声明一般使用var关键字
//声明单个变量
var identifier type
//声明多个变量 
var identifier1, identifier2 type  
//这种因式分解关键字的写法一般用于声明全局变量
var (
    vname1 type1
    vname2 type2
)     

var关键字声明变量可以不指定属性,但一定要赋值,系统将会根据赋值自动推断变量类型

var identifier = value
  • 使用 := 赋值操作符进行声明
//不需要指定具体类型,系统会根据赋值自动推断变量类型
identifier := value

注意:由于Go是一种强语言,对于已经声明类型的变量,我们不能够使用:=或者var再对变量进行声明,同时对于已经声明完成的变量需要再赋值时,要使用类型一样的值进行赋值

2.条件语句

在Go中,if关键字后不需要接小括号,但判断结束后必需要接大括号(C++中可以对只有单个语句的if语句省略大括号)
Go中没有三目运算符

if 7%2 == 0 {
    fmt.Println("7 is even")
} else {
    fmt.Println("7 is odd")
}

3.循环语句

  • Go中只有for循环
  • 与if语句一样不需要加小括号
//for关键字后不加任何条件为死循环
for {
    fmt.Println("loop")
    break
}
//一般for语句
for j := 7; j< 9; j++ {
    fmt.Println(j)
}
//for循环形式的do while循环
i := 1
for i <= 3 {
    fmt.Println(i)
    i = i + 1
}

4.switch语句

  • switch语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break
  • switch默认情况下case最后自带break语句,匹配成功后就不会执行其他的case。如果我们仍需执行下一个case,可以使用fallthrough关键字,不管后面的case表达式结果是否为true,所有case都会强制执行
switch {  
    case false:  
            fmt.Println("1、case 条件语句为 false")  
            fallthrough  
    case true:  
            fmt.Println("2、case 条件语句为 true")  
            fallthrough  
    case false:  
            fmt.Println("3、case 条件语句为 false")  
            fallthrough  
    case true:  
            fmt.Println("4、case 条件语句为 true")  
    case false:  
            fmt.Println("5、case 条件语句为 false")  
            fallthrough  
    default:  
            fmt.Println("6、默认 case")  
    }
//执行结果:
//2、case 条件语句为 true
//3、case 条件语句为 false
//4、case 条件语句为 true

5.数组

数组声明:

//声明一个大小为5的int数组,在没有初始化的条件下会按照默认初始化,对于整数类型,初始值为0
var numbers1 [5]int
//使用列表进行初始化数组元素
var numbers2 = [5]int{1, 2, 3, 4, 5}
//使用 := 关键字声明和初始化数组
numbers3 := [5]int{1, 2, 3, 4, 5}
  • 注意: 在Go语言中,数组的大小是类型的一部分,因此不同大小的数组是不兼容的,也就是说 [5]int 和 [10]int 是不同的类型。
  • 如果数组长度不确定,可以使用 ... 代替数组的长度,编译器会根据元素个数自行推断数组的长度
//两种不同的写法
var balance1 = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
balance2 := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
  • 还可以指定下标来初始化
//将索引为 1 和 3 的元素初始化
balance := [5]float32{1:2.0,3:7.0}