这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
参考资料:
【后端专场 学习资料一】第五届字节跳动青训营 - 掘金 (juejin.cn)
Go 语言上手 - 基础语法 .pptx - 飞书云文档 (feishu.cn)
Go程序基本结构
-
源码文件
- Go的源码文件是以
.go为后缀名存储在计算机中 - 源码文件的文件名均为小写字母组成
- 如果源码文件的文件名含有多个部分,则用下划线
_对其进行分割,例如:my_demo.go - 源码文件的文件名不包含空格或其他特殊字
- 一个源文件可以包含任意多行的代码,Go 本身没有对源文件的大小进行限制
- Go的源码文件是以
-
包的概念
-
包是Go语言结构化代码采用的方式,
-
每个 Go 文件都属于且仅属于一个包
-
一个包可以由许多以
.go为扩展名的源文件组成,因此源码文件的文件名和包名一般来说都是不相同的 -
必须在源文件中非注释的第一行指明这个文件属于哪个包,如:
package main -
package main表示一个可独立执行的程序,每个Go应用程序都有且仅包含一个名为main的包 -
所有的包名都应该使用小写字母
-
每个文件目录应只包含一个包
-
Go 中的包模型采用了显式依赖关系的机制来达到快速编译的目的,编译器会从后缀名为 .o的对象文件中提取传递依赖类型的信息
-
Go 程序是通过
import键字将一组包链接在一起 -
导包语法:
// 导入单个包 import "fmt" import "os" // 导入多个包 import ( "fmt" "os" ) -
包的可见性规则:当标识符(包括常量、变量、类型、函数名、结构字段等等)以大写字母开头,就标识这该对象就可以被外部包的代码所使用,这被称为导出(像面向对象语言中 的 public);如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中 的 private)
-
包调用语法
// 1.默认调用 import "pack1" func main() { pack1.Thing } // 2.别名的使用 // 通过使用包的别名来解决包名之间的名称冲突,或者说根据你的个人喜好对包名进行重新设置 import fm "fmt" func main() { fm.Println("hello, world") } // 3.点号的使用 // 点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名 import . "fmt" func main() { Println("hello, world") }
-
函数
-
函数定义格式
func functionname(param1 type1, param2 type2, …) (ret1 type1, ret2 type2, …) -
特殊的函数--main函数:既没有参数,也没有返回类型,该函数一旦返回就表示程序已成功执行并立即退出
-
函数里的代码(函数体)使用大括号
{}括起来,左大括号{必须与方法的声明放在同一行
-
-
注释
- 注释不会被编译,但可以通过 godoc 来使用
- 单行注释:使用双斜杠;多行注释:使用
/**/
数据类型
-
常量
-
常量使用关键字 const 定义
-
数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
-
定义语法
// const identifier_name [type] = value const Pi float32 = 3.14159 const Pi = 3.1415 // 批量定义 const ( Monday, Tuesday, Wednesday = 1, 2, 3 Thursday, Friday, Saturday = 4, 5, 6 )
-
-
变量
- 定义语法
var identifier type var a, b, c int a := 1
- 定义语法