第01讲 初识Go语言
本讲义基于视频转录内容生成,视频时长约15分钟。
一、Go语言官网与文档
本讲首先介绍了Go语言的官方网站和文档资源:
- 官网:Go语言官方网站,可以下载SDK、查看文档
- 文档:官方提供完整的语言文档和教程
- Go Playground:官方提供的在线代码执行工具,可以直接在浏览器中编写和运行Go代码
在线体验
在Go Playground中可以直接编写代码并执行:
Go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
执行后会输出 Hello, World!,方便快速体验Go语言。
二、Go程序基本结构
老师详细讲解了Go程序的基本组成部分:
2.1 package main(包声明)
- 每个Go工程都需要声明一个包
package main是主包,表示这是一个可执行程序- 类似于Java中的项目入口
2.2 import(导入)
Go
import "fmt"
fmt是Go内置的标准库- 类似于Java中的import,用于导入工具包
fmt包专门用于格式化输入输出
2.3 func main(主函数)
Go
func main() {
// 函数内容
}
关键讲解点:
- Go没有面向对象的概念,使用的是函数
func是关键字,用于声明函数main是函数名称,是程序入口- 函数可以没有返回类型(不需要返回值时可以省略)
- 类似于Java中class里面的方法
- 花括号
{}内是函数体内容
2.4 函数返回值示例
老师演示了带返回值的函数:
Go
func add(a int, b int) int {
return a + b
}
- 函数名后面可以声明返回值类型
- 不需要返回值时可以省略返回类型
三、Go语言编译优势
3.1 编译时错误提示
老师重点强调了Go语言的一个优势——编译时就能发现错误:
- 代码有问题时,编译器会直接报错并指出具体行号
- 例如:第11行有语法错误,会提示具体信息
- 在编译阶段就会出现错误提示,不需要等到运行时
3.2 常见编译错误
- 语法错误(如缺少括号、分号等)
- 返回值数量不匹配
- 变量声明后未使用
- 未导入使用的包
老师强调:Go语言编译器非常严格,只要有问题就会很快告诉你,这是Go语言的优势之一。
四、变量声明
4.1 方式一:var关键字声明(标准语法)
Go
var a int = 10
var:关键字a:变量名int:数据类型10:初始值
4.2 方式二:短变量声明(推荐)
Go
b := 10
- 使用
:=进行短变量声明 - 编译器会自动推导类型
- 等价于
var b int = 10 - 这是最常用的写法,也叫短变量声明
- 企业开发中也常用这种方式
老师建议:日常开发建议直接用
:=写法,简单方便。但需要控制变量大小时,仍需使用var指定具体类型(如 uint8、int16等)。
4.3 格式化输出
Go
fmt.Printf("a的值: %d, 类型: %T\n", a, a)
%d:格式化输出整数%T:输出变量的数据类型
五、数据类型:有符号与无符号
5.1 Go的整数类型
| 类型 | 说明 | 是否有符号 |
|---|---|---|
uint8 |
8位无符号整数 | 无符号 |
uint16 |
16位无符号整数 | 无符号 |
uint32 |
32位无符号整数 | 无符号 |
int |
有符号整数 | 有符号 |
int8 |
8位有符号整数 | 有符号 |
int16 |
16位有符号整数 | 有符号 |
int32 |
32位有符号整数 | 有符号 |
5.2 有符号 vs 无符号
老师向学生提问并讲解:
- 有符号(signed):可以存储正数、负数和零
- 无符号(unsigned):只能存储正数和零,不能存负数
老师强调:这与编程语言无关,是计算机基础知识,C语言中也有同样的概念。
5.3 为什么Go需要区分?
Go语言是比较底层的系统级语言,直接和系统打交道,所以需要区分有符号和无符号来精确控制内存大小。
六、底层存储:原码、反码、补码
老师简单介绍了计算机底层的数值存储方式(面试常考):
6.1 基本概念
- 原码:最高位表示符号(0正1负),其余位表示数值
- 反码:正数的反码与原码相同;负数的反码符号位不变,其余位取反
- 补码:反码加1
6.2 关键要点
| 要点 | 说明 |
|---|---|
| 无符号数 | 没有符号位,所有位都表示数字 |
| 正数存储 | 原码 = 反码 = 补码(三者相同) |
| 负数存储 | 不存原码,存的是补码 |
| CPU运算 | 实际都使用补码进行运算 |
6.3 补码计算方式
- 原码 → 反码:符号位不变,其余位取反
- 反码 → 补码:反码 + 1
老师说明:这部分大家简单了解即可,知道CPU运算使用补码就行。如果面试官问底层存储,需要知道原码、反码、补码的概念。
七、本讲小结
- Go语言有官网、文档和Playground在线工具
- Go程序结构:
package main→import→func main - Go没有面向对象,使用函数(类似Java的class方法)
- Go编译器严格,编译时就能发现错误
- 变量声明两种方式:
var标准声明和:=短声明(推荐) - 整数类型分为有符号(int)和无符号(uint)
- 底层存储使用补码,CPU运算也使用补码
下节预告
下节课将开始安装Go编译器,编写实际代码。老师建议日常开发直接用 := 短变量声明即可。