Go Academy
Go 语法与基础
60 分钟

A2: 基本类型、控制流与错误处理

深入理解 Go 的类型系统、控制结构、错误处理模式以及 defer/panic

学习目标

  • 1.掌握 Go 基本类型与 TypeScript 类型的对应关系
  • 2.理解 Go 独特的错误处理模式(多返回值)
  • 3.掌握 defer、panic、recover 的使用场景

课程内容

本课时将帮助你快速掌握相关知识。以下是示例代码:

main.go
1package main
2
3import "fmt"
4
5func main() {
6 fmt.Println("Hello, Go!")
7
8 // Go 的变量声明
9 var name string = "TypeScript Developer"
10 age := 25 // 短变量声明
11
12 fmt.Printf("Name: %s, Age: %d\n", name, age)
13}

上面的代码演示了 Go 的基本语法,包括包声明、导入和变量声明。 注意第 8 行的短变量声明语法 :=,这是 Go 的特色。

与 TypeScript 对比

example.ts
// TypeScript 版本
const name: string = "TypeScript Developer";
const age = 25; // 类型推断
console.log(`Name: ${name}, Age: ${age}`);

实战练习

实现安全的除法函数

入门

编写一个除法函数,当除数为 0 时返回错误

初始代码

Go
1package main
2
3import (
4 "errors"
5 "fmt"
6)
7
8// divide 执行除法运算,除数为 0 时返回错误
9func divide(a, b float64) (float64, error) {
10 // 请补全实现
11}
12
13func main() {
14 result, err := divide(10, 2)
15 if err != nil {
16 fmt.Println("Error:", err)
17 return
18 }
19 fmt.Println("Result:", result)
20}
查看参考答案
Go
1package main
2
3import (
4 "errors"
5 "fmt"
6)
7
8func divide(a, b float64) (float64, error) {
9 if b == 0 {
10 return 0, errors.New("division by zero")
11 }
12 return a / b, nil
13}
14
15func main() {
16 result, err := divide(10, 2)
17 if err != nil {
18 fmt.Println("Error:", err)
19 return
20 }
21 fmt.Println("Result:", result)
22}