Go语言基础语法 | 青训营

100 阅读1分钟

Go语言基础语法

如题,从Python转过来的,特此记录一下Go语言的基础语法。下列所有关键词均可转换成Python

Go中有一个很奇怪的特性,即大括号不能换行写,这让我C#的语法很难习惯。

例如:

if x > 1 {
}

这个是合规的,但

if x > 1
{
}

这个就通过不了编译。

形如"A - B"指的是Go语言语法——Python语法

基本语法

导入包 | import - import

基本导入

导入一个基本包,这里和Python一样。

import "fmt"
import fmt

as语法

本语法相当于Python中的as关键词。可以将部分比较拗口/长的包名转换成比较容易记的包名。如将tensorflow转换成tf

import (
format "fmt"
)
import fmt as format

文件夹式导入

在Python里面,我们可以使用形如import a.b.c的方法导入一个文件夹包,也称作相对导入。Go语言里可以使用 import "xx/abc"的方法导入。

go.mod的require

需要GO111MODULE支持

在一个包里,我们可以在go.mod里通过require导入需要的包(当然需要提供版本号),这样go语言就不会先找%GOPATH%\src目录,而是先找%GOPATH%/pkg下。

来点示例

下方Go代码和Python代码等价(库除外)。

import fmt
func main(){
    var x int
    var y string = "Hello World!"
    var arr [5]int
    fmt.Scanln(&x)
    fmt.Println(y)
    fmt.Println(x+1)
}
import format

if __name__ == "__main__":
    x = int(input())
    y: str = "Hello World!"
    arr: list = []
    print(y)
    print(x+1)

输入输出 | input - Scan

go语言里使用fmt.Scan(&x)来进行输入,使用fmt.Println("")来进行输出。这个和python语言的inputprint比较像。

数组 | [] - []type

go语言里数组的声明方式和python里有些区别,go使用var Name [length]Type,而Python使用Name: list = []进行声明。