这是我参与「第五届青训营 」笔记创作活动的第1天。
写这篇笔记主要想总结整理一下Go的基础语法。
Go语言的一些优点
- 高性能、高并发
- 语法简单(感觉和C++有很多相似之处,学习成本相对更低)
- 标准库丰富
- 编译速度快、性能好
- 跨平台
最简单的Go代码
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
// 单行or多行注释用法同C++
// 一行代表一个语句结束,不需要加分号 ;
}
基础语法
变量、常量、运算符与数据类型
强类型:int、float、string、bool等;string是内置类型,可以通过+拼接,也可以用=比较两个字符串
变量声明方法:var v_name type = value(可不显式写出类型)或v_name := value(这是声明 不能对已声明的变量做:=)
运算符:使用方法和优先级与C++中类似
常量const:没有确定的类型,根据上下文自动确定
条件语句
Go没有三元运算符?:
if-else(if-else if-else)
语法要点:与C/C++语法类似,但不需要对判断条件加括号;必须对每一个条件代码加大括号,不能像C++一样对单行的条件代码省略大括号
switch-case
a := 2
switch a {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
case 3:
fmt.Println("three")
case 4, 5:
fmt.Println("four or five")
default:
fmt.Println("other")
}
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
语法要点:switch后的判断语句不要加括号;不需要break语句,执行到一个case/default后会直接跳出当前结构;switch后的判断语句可以替代if-else语句,功能更强大
循环语句
Go没有while和do-while循环语句
for
for j := 7; j < 9; j++ {
fmt.Println(j)
}
语法要点:for后面的三段不要加括号;与C++类似,for后面的三段中任何一段都可以不写,如果三段都不写也不需要加分号(类似于while(1)?);支持通过循环控制语句break、continue跳出循环,用法和C++中类似
函数
func add(a, b int) int {
return a + b
}
语法要点:变量类型后置;默认函数传递的是值而非引用;函数允许返回多个值(实际业务中通常返回两个值,第一个为实际结果,第二个为错误信息)