Learning Path
浏览 Go 相关教程与章节。
主流编程语言、数据结构、设计模式、正则与基础算法。
教程
55
Go 语言教程 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 Go 语言特色 简洁、快速、..
Go 语言指针数组 Go 指针 在我们了解指针数组前,先看个实例,定义了长度为 3 的整型数组: 实例 [mycode4 type='go'] package main import 'fmt' const MAX int = 3 func main() { a := []int{10,100,200} var i int for i = 0; i < MAX;..
Go 语言数组 Go 语言提供了数组类型的数据结构。 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。 相对于去声明 number0, number1, ..., number99 的变量,使用数组形式 numbers[0], numbers[1] ..., numbers[99] 更加方便且易于扩展。 数组元素可以通过索引(位置)来读取(或者修改),索引从 ..
Go 语言基础语法 上一章节我们已经了解了 Go 语言的基本组成结构,本章节我们将学习 Go 语言的基础语法。 Go 标记 Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成: fmt.Println('Hello, World!') 6 个标记是(每行一个): 1. fmt 2. . 3. Println 4. ( 5. 'Hello, ..
Go 语言 break 语句 Go语言循环语句 在 Go 语言中,break 语句用于终止当前循环或者 switch 语句的执行,并跳出该循环或者 switch 语句的代码块。 break 语句可以用于以下几个方面:。 用于循环语句中跳出循环,并开始执行循环之后的语句。 break 在 switch 语句中在执行一条 case 后跳出语句的作用。 break 可应用在 select 语句中。 在多重循环中,可以用标号 label..
Go 并发 并发是指程序同时执行多个任务的能力。 Go 语言支持并发,通过 goroutines 和 channels 提供了一种简洁且高效的方式来实现并发。 Goroutines:Go 中的并发执行单位,类似于轻量级的线程。Goroutine 的调度由 Go 运行时管理,用户无需手动分配线程。使用 go 关键字启动 Goroutine。Goroutine 是非阻塞的,可以高效地运行成千上万个 Goroutine。 Channel:G..
Go 语言常量 常量是一个简单值的标识符,在程序运行时,不会被修改的量。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。 单词释义: const 是 constant(常量)的缩写,表示程序中不可变的值。 基本语法与参数 常量的定义格式: const identifier [type] = value 语法说明 identifier:常量名称,遵循 Go 标识符命名规则(字母、数字、下划线,且不能以..
Go 语言 continue 语句 Go 语言循环语句 Go 语言的 continue 语句 有点像 break 语句。但是 continue 不是跳出循环,而是跳过当前循环执行下一次循环语句。 for 循环中,执行 continue 语句会触发 for 增量语句的执行。 在多重循环中,可以用标号 label 标出想 continue 的循环。 语法 continue 语法格式如下: continue; continue ..
Go 语言数据类型 在 Go 编程语言中,数据类型用于声明函数和变量。 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。 Go 语言按类别有以下几种数据类型: 序号类型和描述 1布尔型布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。 2数字类型整型 int 和浮点型 float32、float64,Go ..
Go 语言条件语句 条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。 下图展示了程序语言中条件语句的结构: Go 语言提供了以下几种条件判断语句: 语句描述 if 语句if 语句 由一个布尔表达式后紧跟一个或多个语句组成。 if...else 语句if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 ..
Go 语言环境安装 Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Windows 安装包下载地址为:https://go.dev/dl/。 如果打不开可以使用这个地址:https://golang.google.cn/dl/。 各个系统对应的包名: 安装包文件名 适用系统 处理器..
Go 错误处理 Go 语言通过内置的错误接口提供了非常简单的错误处理机制。 Go 语言的错误处理采用显式返回错误的方式,而非传统的异常处理机制。这种设计使代码逻辑更清晰,便于开发者在编译时或运行时明确处理错误。 Go 的错误处理主要围绕以下机制展开: error 接口:标准的错误表示。显式返回值:通过函数的返回值返回错误。自定义错误:可以通过标准库或自定义的方式创建错误。panic 和 recover:处理不可恢复的严重错误。 ..
Go 语言文件处理 文件处理是 Go 语言中最常见的操作之一——读取配置、写入日志、数据持久化都离不开它。Go 的标准库提供了一套简洁而强大的文件 I/O 接口,覆盖从单次读写到流式处理的各种场景。 与文件处理相关的核心包有 5 个,各有分工: Go 文件处理核心包 os 核心:创建、读写、删除、权限 ..
Go fmt.Printf 格式化字符串 Go 语言基础语法 fmt.Printf 是 Go 语言中一个功能强大的输出格式化函数,主要用于格式化字符串并将结果输出到标准输出(通常是控制台)。 fmt.Printf 按照指定的格式化字符串对后续变量进行格式化,语法如下: fmt.Printf(格式化样式, 参数列表…) 格式化样式:字符串形式,格式化符号以 % 开头, %s 字符串格式,%d 十进制的整数格式。 参数列表..
Go fmt.Sprintf 格式化字符串 Go 语言基础语法 Go 可以使用 fmt.Sprintf 来格式化字符串,格式如下: fmt.Sprintf(格式化样式, 参数列表…) 格式化样式:字符串形式,格式化符号以 % 开头, %s 字符串格式,%d 十进制的整数格式。 参数列表:多个参数以逗号分隔,个数必须与格式化样式中的个数一一对应,否则运行时会报错。 实例 [mycode4 type='go']..
Go 语言 for 循环 Go 语言循环语句 for 循环是一个循环控制结构,可以执行指定次数的循环。 语法 Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。 和 C 语言的 for 一样: for init; condition; post { } 和 C 的 while 一样: for condition { } 和 C 的 for(;;) 一样: for { } init: 一般为赋值表..
Go 语言函数作为实参 Go 函数 Go 语言中,函数是一等公民(First-class citizen),可以像普通变量一样被赋值、传递和使用。将函数作为实参传递给另一个函数,是 Go 中常见的编程模式,常用于回调、策略模式等场景。 函数赋值给变量 函数可以赋值给一个变量,通过该变量来调用函数: 实例[mycode4 type='go'] package main import ( �..
Go 语言函数引用传递值 Go 函数 引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。 引用传递指针参数传递到函数内,以下是交换函数 swap() 使用了引用传递: /* 定义交换值函数*/ func swap(x *int, y *int) { var temp int temp = *x /* 保持 x 地址上的值 */ *x = *y /..
Go 语言函数值传递值 Go 函数 传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 默认情况下,Go 语言使用的是值传递,即在调用过程中不会影响到实际参数。 以下定义了 swap() 函数: /* 定义相互交换值的函数 */ func swap(x, y int) int { var temp int temp = x /* 保存 x 的值 */ x ..
Go 语言函数闭包(匿名函数) Go 函数 Go 语言支持匿名函数,可作为闭包。匿名函数是一个“内联”语句或表达式。匿名函数的优越性在于可以直接使用函数内的变量,不必申明。 匿名函数是一种没有函数名的函数,通常用于在函数内部定义函数,或者作为函数参数进行传递。 以下实例中,我们创建了函数 getSequence() ,返回另外一个函数。该函数的目的是在闭包中递增 i 变量,代码如下: 实例 [mycode4 type='..
Go 语言函数 函数是基本的代码块,用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。 函数声明告诉了编译器函数的名称,返回类型,和参数。 Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个数。 函数定义 ..
Go 语言泛型 泛型是 Go 语言在 1.18 版本中引入的重要特性,它让开发者能够编写更加灵活和可重用的代码。 泛型主要通过以下两个核心概念来实现: 类型参数(Type Parameters):允许你在函数或类型定义中使用一个或多个类型作为参数。 类型约束(Type Constraints):指定类型参数必须满足的条件,确保在函数内部可以安全地操作这些类型。 概念 ..
Go 语言 goto 语句 Go 语言循环语句 Go 语言的 goto 语句可以无条件地转移到过程中指定的行。 goto 语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。 但是,在结构化程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。 语法 goto 语法格式如下: goto label; .. . label: statement; goto 语句..
Go 语言开发工具 VSCode VScode 安装教程参见:https://www.runoob.com/w3cnote/vscode-tutorial.html 然后我们打开 VSCode 的扩展(Ctrl+Shift+P): 搜索 go: 点击安装,安装完成后我们就可以使用代码提示、测试、调试等功能了。 GoLand GoLand 是 Jetbrains 家族的 Go 语言 IDE,有 30 天的免费试用期。 安装也很简..