这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
一、Go的Hello World程序
在学习一个程序时,我们当然要看看其Hello World程序是怎么写的。一个Go程序的标准Hello world如下:
package main
import "fmt"
func main() {
fmt.Println("hello, world")
}
package main声明了该文件具体属于哪个包,import则说明了导入了哪些库。Go中含有许多的标准库,如fmt以及os等,当导入的库比较多时,我们可以有以下更优雅的写法:
import (
"fmt"
"os"
)
最后一段的即实现了我们的main函数,其中的Println代表输出结果并换行。
有的同学会发现golang中不需要使用分号进行一句的结束,这是因为我们的golang编译器会自动帮我们补上,于是在写一个函数时,我们需要额外注意大括号的位置。例如,在golang中以下的形式是编译不了的:
func main()
{
fmt.Println("hello, world")
}
二、变量
go中我们可以像c++那样显式的声明变量类型:
var a int
var b bool
var str string
但是,我们在写一些局部变量时更多的是声明的时候同时赋值,即在=前加上冒号,golang编译器会自动帮我们判断变量类型:
a := 1
此外,go中我们一般采取驼峰命名法去命名变量,即第一个单词首字母小写,第二个以及以后的单词首字母大写,如varName。但是需要注意,在go中首字母大写的是public类型的,而小写的是private类型的,当我们需要在另一个文件中引用时,必须使用大写。
三、控制结构
在go中,我们没有while语句,但是if、switch和for是有的,而while的功能我们一般使用for进行实现。
(1) if语句
if condition1 {
// do something1
} else if condition2 {
// do something2
} else {
// default
}
if是用于测试某个条件(布尔型或逻辑型)的语句,如果该条件成立,则会执行 if 后由大括号括起来的代码块,否则就忽略该代码块继续执行后续的代码。注意,在go中判断语句无需用小括号扩出来。
(2) switch语句
switch var1 {
case val1:
...
case val2:
...
default:
...
}
相比较 C 和 Java 等其它语言而言,Go 语言中的 switch 结构使用上更加灵活。它接受任意形式的表达式。并且,当一个条件判断成功后,即停止匹配,也就是说我们无需像C++那样在每个case执行语句的末尾加上break。
(3) for语句
for i:=0; i<5; i++ {
for j := i; j < 5; j++{
fmt.Println(j)
}
}
这是go中一个最简单的for语句,我们可以稍微复杂一点,例如在一个for循环中使用两个变量计数:
for i, j := 0, N; i < j; i, j = i+1, j-1 {
...
}
for-range语句还可以用来迭代一个集合:
for pos, char := range str {
...
}
for语句也可以模拟一个while的实现:
for i:=0; i < 5; {
i++
}