此篇文章是我参与 #青训营笔记创作活动 的第3篇笔记
主要是简单记录一下自己在学习Go语言时遇到的一些小要点,
只是个人的一个学习记录,水平不高还望大佬们包容。
0x01 运行go程序
第一个Go程序:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
使用命令生成二进制可执行文件:
# 生成二进制文件
$ go build hello.go
# 查看目录的文件
$ ls
hello hello.go
# 运行二进制文件
$ ./hello
Hello, World!
使用命令直接运行go程序(不生成二进制文件):
$ go run hello.go
Hello, World!
0x02 Go 语言结构
Go 语言的基础组成有以下几个部分:
-
包声明
package main- 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
-
引入包
import "fmt"- 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
-
函数
func main(){}- func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)
-
变量
-
Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。
声明变量的一般形式是使用 var 关键字
-
// 可以以此声明多个变量,格式为 var + 变量名 + type var x1,x2 type
-
-
语句 & 表达式
- go语言的相关语法先留到后面
- 此处放个提醒:在go语言中
{不能够单独放在一行,会报错,这与C、C++等语言不同 -
package main import "fmt" func main() { // 错误,{ 不能在单独的行上 fmt.Println("Hello, World!") }
-
注释
-
// 为单行注释 /* 为多行注释 可以注释多行 */
-
0x03 Go 语言部分基础语法
1. 行分隔符
与C、C++等语言不同,在Go程序中每个语句不需要使用分号;来结尾,Go语言程序和Python相同,每一行代表着一个代码语句
但是如果你实在是想把多个语句写在同一行里,那就需要使用;来进行人为的区分,但在实际开发中我们并不鼓励这种做法
2. 标识符
标识符用来命名变量、类型等程序实体。
与C、C++等语言一样,Go语言的标识符其实是一个或多个字母(AZ和az)数字(0~9)、下划线_组成的序列,而且第一个字符不能是数字,只能是字母或者下划线;同时标识符也不能与go语言的关键字相同。
规则归纳如下:
- 由 26 个英文字母、0~9、
_组成; - 不能以数字开头
- Go语言中严格区分大小写;
- 标识符不能包含空格
- 不能以系统保留关键字作为标识符
以下是有效的标识符:
x
xyz
XyZ
x100
_xyz
x_1
以下是无效的标识符:
- 2xy(以数字开头)
- func(Go 语言的关键字)
- x+y(出现了下划线以外的符号,运算符是不被允许的)
- x y (一个标识符中不能包含空格)
同时命名标识符时还需要注意以下几点(应该算是每一种语言都通用的)
- 标识符的命名要尽量采取简短且有意义
- 不能和标准库中的包名重复
- 为变量、函数、常量命名时采用驼峰命名法,例如 stuName、getVal
go语言的关键字一共有25个,如下表所示:
| 关键字 | ||||
|---|---|---|---|---|
| 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 |
在Go语言中还存在着一些特殊的标识符,叫做预定义标识符,如下表所示:
| 预定义标识符 | ||||||||
|---|---|---|---|---|---|---|---|---|
| append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 |
| copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 |
| int32 | int64 | iota | len | make | new | nil | panic | uint64 |
| println | real | recover | string | true | uint | uint8 | uintptr |
预定义标识符一共有 36 个,主要包含Go语言中的基础数据类型和内置函数,这些预定义标识符也不可以当做标识符来使用。
附录
本文参考链接及推荐阅读: