💜 想真正擅长编程? 从一门课程开始,100% 免费

《笔记》第一篇 初识Go语言

第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. 原码 → 反码:符号位不变,其余位取反
  2. 反码 → 补码:反码 + 1

老师说明:这部分大家简单了解即可,知道CPU运算使用补码就行。如果面试官问底层存储,需要知道原码、反码、补码的概念。


七、本讲小结

  1. Go语言有官网、文档和Playground在线工具
  2. Go程序结构:package main → import → func main
  3. Go没有面向对象,使用函数(类似Java的class方法)
  4. Go编译器严格,编译时就能发现错误
  5. 变量声明两种方式:var 标准声明和 := 短声明(推荐)
  6. 整数类型分为有符号(int)和无符号(uint)
  7. 底层存储使用补码,CPU运算也使用补码

下节预告

下节课将开始安装Go编译器,编写实际代码。老师建议日常开发直接用 := 短变量声明即可。