Learning Path
浏览 Go 相关教程与章节。
主流编程语言、数据结构、设计模式、正则与基础算法。
教程
55
Go 语言 if...else 语句 Go 语言条件语句 if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。 语法 Go 编程语言中 if...else 语句的语法如下: if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } else { /* 在布尔表达式为 false 时执行 */ } If 在布尔表达式为 true 时,其后紧跟的语句块执..
Go 语言 if 语句 Go 语言条件语句 if 语句由布尔表达式后紧跟一个或多个语句组成。 语法 Go 编程语言中 if 语句的语法如下: if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } If 在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则不执行。 流程图如下: 实例 使用 if 判断一个数变量的大小: 实例 [mycode4 type='go'..
Go 继承 在面向对象编程(OOP)中,继承是一种机制,允许一个类(子类)从另一个类(父类)继承属性和方法。通过继承,子类可以复用父类的代码,并且可以在不修改父类的情况下扩展或修改其行为。 Go 语言并不是一种传统的面向对象编程语言,它没有类和继承的概念。Go 使用结构体(struct)和接口(interface)来实现类似的功能。 Go 中的 “继承” Go 语言没有传统面向对象语言中的类(class)和继承(inherita..
Go 语言接口 接口(interface)是 Go 语言中的一种类型,用于定义行为的集合,它通过描述类型必须实现的方法,规定了类型的行为契约。 Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。 Go 的接口设计简单却功能强大,是实现多态和解耦的重要工具。 接口可以让我们将不同的类型绑定到一组公共的方法上,从而实现多态和灵活的设计。 接口的特点 ..
Go 简介 Go(又称 Golang)是 Google 开发的一种开源编程语言,设计目标是让开发者能够高效地构建简单、可靠且高性能的软件。 Go 语言诞生于 2007 年,由 Google 的三位资深工程师——Robert Griesemer、Rob Pike 和 Ken Thompson 联合设计,并于 2009 年正式开源发布。 Go 的设计初衷是解决 Google 内部面临的大规模软件开发痛点:C++ 编译太慢、Java 运行时..
Go 语言循环语句 在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。 以下为大多编程语言循环程序的流程图: Go 语言提供了以下几种类型循环处理语句: 循环类型 描述 for 循环 重复执行语句块 循环嵌套 在 for 循环中嵌套一个或多个 for 循环 循环控制语句 循环控制语句可以控制循环体内语句的执行过程。 GO 语言支持以下几种循环控制语..
Go 语言Map(集合) Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。 Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,遍历 Map 时返回的键值对的顺序是不确定的。 在获取 Map 的值时,如果键不存在,返回该类型的零值,例如 int 类型的零值是 0,string 类型的零值是 ''。 Map 是..
Go 语言函数方法 Go 函数 Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。语法格式如下: func (variable_name variable_data_type) function_name() [return_type]{ /* 函数体*/ } 下面定义一个结构体类型和该类型的一个方法: 实例..
Go Modules Go Modules 是 Go 语言的官方依赖管理工具,自 Go 1.11 版本开始引入,在 Go 1.16 版本成为默认的依赖管理模式。 Go Modules 解决了 Go 语言长期以来在依赖管理方面的痛点,为开发者提供了版本控制、依赖隔离和可重复构建等核心功能。 Go Modules 是一组相关 Go 包的集合,它们被版本化并作为一个独立的单元进行管理。每个模块都有一个明确的版本标识,允许开发者在项目中精确指..
Go 语言多维数组 Go 语言数组 多维数组是数组的数组,可以把它想象成一个数据表格或矩阵,其中每个元素都可以通过多个索引来访问。 Go 语言中的多维数组可用于处理表格数据、矩阵运算或游戏棋盘等结构化的信息。 基本概念 一维数组:像一条直线上的点,只需要一个坐标(索引)就能找到特定元素 二维数组:像一个表格,需要行和列两个坐标 三维数组:像一个立方体,需要长、宽、高三个坐标 更高维度:理论上可以有多维,但实际编程中二维和三维最常..
Go 语言 if 语句嵌套 Go 语言条件语句 你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。 语法 Go 编程语言中 if...else 语句的语法如下: if 布尔表达式 1 { /* 在布尔表达式 1 为 true 时执行 */ if 布尔表达式 2 { /* 在布尔表达式 2 为 true 时执行 */ } } 你可以以同样的方式在 if 语句中嵌..
Go 语言循环嵌套 Go 语言循环语句 Go 语言允许用户在循环内使用循环。接下来我们将为大家介绍嵌套循环的使用。 语法 以下为 Go 语言嵌套循环的格式: [mycode4 type='go'] for [condition | ( init; condition; increment ) | Range] { for [condition | ( init; condition; incr..
Go 语言运算符 运算符用于在程序运行时执行数学或逻辑运算。 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 接下来让我们来详细看看各个运算符的介绍。 算术运算符 下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。 运算符描述实例 +相加 A + B 输出结果 30 -相减 A - B 输出结果 -10 *相乘 A * B 输出结果 200 /相除 B /..
Go 语言向函数传递数组 Go 语言数组 Go 语言中的数组是值类型,因此在将数组传递给函数时,实际上是传递数组的副本。 如果你想向函数传递数组参数,你需要在函数定义时,声明形参为数组,我们可以通过以下两种方式来声明: 方式一 形参设定数组大小: func myFunction(param [10]int) { .... } 方式二 形参未设定数组大小: func myFunction(param []int)..
Go 语言指针作为函数参数 Go 指针 Go 语言允许向函数传递指针,只需要在函数定义的参数上设置为指针类型即可。 以下实例演示了如何向函数传递指针,并在函数调用后修改函数内的值,: 实例 [mycode4 type='go'] package main import 'fmt' func main() { /* 定义局部变量 */ var a int = 100 var..
Go 语言指向指针的指针 Go 指针 如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。 当定义一个指向指针的指针变量时,第一个指针存放第二个指针的地址,第二个指针存放变量的地址: 指向指针的指针变量声明格式如下: var ptr **int; 以上指向指针的指针变量为整型。 访问指向指针的指针变量值需要使用两个 * 号,如下所示: package main import �..
Go 语言指针 Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务。 接下来让我们来一步步学习 Go 语言指针。 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地址。 Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。 以下实例演示了变量在内存中地址: 实例[mycode4 type='go'] package main import..
Go 语言结构 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代码输出了'Hello World!': 实例[mycode4 type='go'] package..
Go 语言范围(Range) Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。 for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下: for key, value := range oldMap { ..
Go 语言递归函数 递归是一种函数直接或间接调用自身的编程技术。 递归函数通常包含两个部分: 基准条件(Base Case):这是递归的终止条件,防止函数无限调用自身。 递归条件(Recursive Case):这是函数调用自身的部分,用于将问题分解为更小的子问题。 在 Go 语言中,递归的使用与其他语言类似,但需要注意 Go 的一些特性。 语法格式如下: [mycode4 type='go'] func r..
Go 语言正则表达式 正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于匹配字符串的强大工具。正则表达式通过定义一种模式(pattern),可以快速搜索、替换或提取符合该模式的字符串,详细可以参见正则表达式教程。在 Go 语言中,正则表达式通过 regexp 包来实现。 Go 语言中的 regexp 包 Go 语言的标准库提供了 regexp 包,用于处理正则表达式。以下是 regexp..
Go 语言变量作用域 作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。 Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函数定义中的变量称为形式参数 接下来让我们具体了解局部变量、全局变量和形式参数。 局部变量 在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。 以下实例中 main() 函数使..
Go 语言 select 语句 Go 语言条件语句 select 是 Go 中的一个控制结构,类似于 switch 语句。 select 语句只能用于通道操作,每个 case 必须是一个通道操作,要么是发送要么是接收。 select 语句会监听所有指定的通道上的操作,一旦其中一个通道准备好就会执行相应的代码块。如果多个通道都准备好,那么 select 语句会随机选择一个通道执行。如果所有通道都没有准备好,那么执行 default ..
Go 语言切片(Slice) Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片(“动态数组'),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。 定义切片 你可以声明一个未指定大小的数组来定义切片: var identifier []type 切片不需要说明长度。 或使用 make() 函数..