Golang语言特点与技巧(一) | 青训营笔记

169 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第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++
}