Go 语言入门指南:基础语法和常用特性解析| 青训营
1. 变量
常见的变量类型有 字符串、整数、浮点型和布尔型等。
在Go语言中,大部分运算符的使用和优先级与C或C++类似。
变量的声明
- var name string = ""
var a = "initial"
var b, c int = 1, 2 //可显示写出变量类型
var d = true
var e = float64
- 变量 := value
f := a + "ly" //go中字符串是内置类型,可直接利用"+"拼接
常量的声明
把变量声明中的var换成const即可。
const s string = "constant"
const h = 5000000
2. if else
Go中的if else与C C++中基本类似,但有2点不同:
- if 后面的条件不加小括号"()"
- if 后面必须有大括号"{}" 3.else 必须紧跟在if的大括号"{}"后面
if 7%2 == 0 {
fmt.Println("even!")
} else {
fmt.Println("odd!")
}
3. 循环
与C和C++不同的是,Go语言中没有while循环和do while循环,只有唯一的for循环。
- for 后面什么都不写:死循环,使用break跳出循环
for{
fmt.Println("haha")
break
}
-
也可以使用经典的C循环
注:for后面三者都可以省略,且不加小括号"()",循环体内可使用break或continue控制循环。
for i := 0; i < 10; i++{
fmt.Println(i)
}
4. switch
与C或C++的不同点:
- 在go语言中switch后面的变量不需要加小括号"()"
- 在C或C++中,case语句里面手动加break否则在执行完该case语句后会依次向下执行其余的case语句; 在go语言中,则不需要加break就可以自动只执行符合条件的case语句。
a := 2
switch a {
case 1:
fmt.Println("one")
default:
fmt.Println("other")
}
注:go语言中的switch功能更为强大,我们也可以在switch后面不加变量直接大括号"{}",选择在case语句后面写条件分支,这样的话会比使用多个if else语句更清晰。
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("It's before noon.")
default:
fmt.Println("It's after noon.")
}
5. 数组
数组长度固定,在go中我们常用的是下面即将介绍的切片。
- 一维数组
var a [5]int
fmt.Println(len(a))
b := [5]int{1, 2, 3, 4, 5}
fmt.Println(b)
- 二维数组
var twod [2][3]int //for循环嵌套给二维数组初始化
6. 切片
切片不同于数组,切片可以任意更改长度,然后还有更多丰富的操作。
- make 创建切片
s := make([]string, 3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println(s[1],len(s))
- append 追加元素
s = append(s,"d","e")
fmt.Println(s)
- copy 复制元素
c := make([]string, len(s))
copy(c, s)
fmt.Println(c) //与s相同
- 下标索引取元素
与python类似,“左闭右开”。
fmt.Println(s[2:4]) //[c d]
fmt.Println(s[:4]) //[a b c d]
fmt.Println(s[2:]) //[c d e]
- 直接初始化创建切片
good := []string{"g","o","o","d"}
fmt.Println(good)
总结
Go语言的基础语法与C或C++有很多相似之处,对于以前学习过C或C++的同学来说,将C、C++和Go类比着来学习可能会起到事半功倍的效果。
标题:走进 Go 语言基础语法 - 掘金