Go 语言入门指南涵盖环境搭建、基础语法、并发模型及错误处理机制。内容涵盖变量类型、控制流、集合操作、函数特性、面向对象实现、错误处理机制以及包管理。重点解析了 Goroutine 调度原理、Channel 通信模式及 CSP 模型,并通过实际代码示例演示了同步控制、超时处理和任务取消机制。适合希望快速掌握 Go 基础与并发实践的开发者参考。
2924408370 浏览
Go 语言核心特性与实战速成指南
一、初步了解 Go 语言
(一)Go 语言诞生的主要问题和目标
Go 语言的设计初衷是为了解决现代软件开发中的几个关键挑战:
多核硬件架构:随着多核处理器成为主流,并行计算变得普遍。传统语言在处理并发时往往缺乏原生支持,而 Go 通过轻量级的协程(goroutine)和通道(channel)机制,让开发者能轻松创建数千个并发任务,无需担心线程管理的复杂性。
这段代码展示了包导入、入口函数 main、条件判断以及字符串拼接。运行 go run hello.go ZYF 将输出 Hello World ZYF。
(二)基本语法结构
1. 变量
Go 支持多种变量声明方式:
声明:var x int
类型推断:y := 5(短变量声明,仅限函数内)
多变量:var a, b, c int
零值:未初始化的变量会有默认值(数字为 0,布尔为 false,字符串为空)
斐波那契数列练习:
package variables
import"testing"funcTestFibList(t *testing.T) {
a, b := 1, 1
t.Log(a)
for i := 0; i < 5; i++ {
t.Log(" ", b)
tmp := a
a = b
b = tmp + a
}
}
funcTestExchange(t *testing.T) {
a, b := 1, 2// Go 支持直接交换,无需临时变量
a, b = b, a
t.Log(a, b)
}
type Set map[int]boolfunc(s Set) Add(element int) { s[element] = true }
4. 字符串
注意字符串不可变,UTF-8 编码。使用 rune 处理字符。
str := "中华人民共和国"for _, c := range str {
t.Logf("%[1]c %[1]x", c)
}
(四)函数
Go 函数支持多返回值、命名返回值、可变参数、闭包及 defer 延迟调用。
funcdivide(a, b int) (result int, err error) {
if b == 0 {
err = errors.New("division by zero")
return
}
result = a / b
return
}
funcmain() {
defer fmt.Println("End")
fmt.Println("Start")
}
(五)面向对象编程
Go 没有类,通过结构体和组合实现 OOP。
1. 结构体与方法
type Circle struct {
Radius float64
}
func(c Circle) Area() float64 {
return3.14 * c.Radius * c.Radius
}