【Go 语言学习笔记】语言结构和基础语法

发表于 2023-06-19

上一篇文章记录 Go 项目的结构:模块、包和版本,紧接着该篇文章将记录 Go 语言的语言结构和基础语法。

语言结构

示例:Hello World

学习编程语言的第一个可运行的示例,输出 Hello World。

main.go

package main

import "fmt"

func main() {
   fmt.Println("Hello, World!")
}

包声明

第一行代码 package main 定义了包名。

在源文件中非注释的第一行进行包声明,指明该源文件属于哪个包,如:package main

包 main 是一个特殊的包,表示一个可独立执行的程序,可执行的 Go 应用程序都包含一个名为 main 的包。

包引入

代码 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包内的函数或其他元素(fmt 包实现了格式化 IO 输入/输出的函数)。

引入包才可以使用包内的函数或其他元素。

一个 import 关键字可以引入多个包,示例:

import (
    "fmt"
    "math"
)

函数

这里以 main 函数为例简单认识一下函数,后面有必要进行单独的讲解。

使用关键字 func 定义函数,紧跟着声明函数名、函数入参和函数返回值。

// 语句声明该函数名为 main;没有入参和返回值;紧跟着代码块
func main() {
}
// 语句声明该函数名为 max;入参是 int 类型的参数 a 和 b;返回值是 int 类型;紧跟着代码块
func max(a, b int) int {
}

main 函数

这个 main 函数是程序开始执行的函数,是每一个可执行程序所必须包含的。

一般来说都是在启动后第一个执行的函数(如果有 init 函数,init 函数则会在 main 之前执行该函数)。

导出函数

函数的导出:允许从另一个包访问该函数。

Go 语言通过函数名第一个字符为 Unicode 大写字母标示导出的函数。

注释

注释在程序执行时将被忽略,是为了方便开发人员理解代码逻辑的说明文本,。

单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。

多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。

基础语法

从上面的例子,已经对 Go 源文件有了基本认识,接下来再认识一些语法。

标记

Go 程序可以由多个标记组成,可以是关键字、标识符、常量、字符串或符号。

可以理解一个 Go 语句就是通过这些标记组合形成,而标记就是对 Go 中所有元素的称呼。

例如在上面的示例 fmt.Println("Hello, World!") 中就是多个标记组成:fmt.Println("Hello, World!")

行分隔符

在 Go 程序中,默认一行代表一个语句结束,所以一般不需要同其他语言使用符号 ; 表示一个语句的结束。

如果多个语句写在同一行,它们则必须使用 ; 人为区分。

可以理解为换行符会由编译器自动识别完成语句划分。

标识符

标识符用来命名变量、类型等程序实体。

一个标识符实际上就是一个或是多个字母(AZ、az)数字(0~9)、下划线_组成的命名,但是第一个字符不能是数字。

例如:demotheName

字符串连接

Go 语言的字符串连接可以使用符号 + 实现字符串连接。

// goStr 将为 HelloWorld
var goStr = "Hello" + "World";

关键字

列举 Go 代码中的关键字或保留字。

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

还有一些预定义标识符。

bool true false int uint
int8 uint8 int16 uint16 int32
uint32 int64 uint64 float32 float64
complex complex64 complex128 byte nil
string panic print println real
copy append cap close new
imag iota len make uintptr
recover