
Go语言教程
文章平均质量分 92
这个专栏涵盖了关于Go语言的各种主题,包括入门教程、高级编程技巧、最佳实践和Go生态系统的不同方面。无论您是新手还是有经验的Go开发者,这里都会有有用的信息和资源,帮助您更好地掌握和应用Go语言。如果您对Go感兴趣,这个专栏将成为您学习和深入了解这门语言的理想之地。
可乐Vayne
努力到无能为力,拼搏到感动自己
展开
-
使用 Go 写入文件
在本教程中,我们将学习如何使用 Go 将数据写入文件。我们还将学习如何同时写入文件。本教程有以下部分由于 Playground 不支持文件操作,请在本地系统中运行本教程的所有程序。原创 2023-11-06 14:15:26 · 1372 阅读 · 1 评论 -
Go中读取文件
文件读取是任何编程语言中最常见的操作之一。在本教程中,我们将了解如何使用 Go 读取文件。原创 2023-11-06 11:39:51 · 501 阅读 · 0 评论 -
Go 中的反射
反射是程序在运行时检查其变量和值并查找其类型的能力。您可能不明白这意味着什么,但没关系。在本教程结束时,您将对反射有一个清晰的了解,所以请继续关注我。原创 2023-11-06 11:28:29 · 243 阅读 · 0 评论 -
Go中第一类函数
支持第一类函数的语言允许将函数分配给变量,作为参数传递给其他函数,并从其他函数返回。Go 支持第一类函数原创 2023-11-06 11:11:32 · 347 阅读 · 0 评论 -
Go中Panic and Recover
在 Go 程序中处理异常情况的惯用方法是使用errors.。errors足以应对程序中出现的大多数异常情况。**但有些情况下,程序在出现异常情况后无法继续执行。在这种情况下,我们使用panic提前终止程序。当函数遇到恐慌时,其执行将停止,所有延迟的函数都会被执行,然后控制权返回给其调用者。这个过程一直持续到当前goroutine的所有函数都返回为止,此时程序将打印恐慌消息,然后打印堆栈跟踪,然后终止。**当我们编写示例程序时,这个概念会更加清晰。**可以重新获得对发生恐慌的程序的控制,recover。原创 2023-11-03 11:44:20 · 267 阅读 · 1 评论 -
Go错误包装
错误包装是将一个错误封装到另一个错误中的过程。假设我们有一个 Web 服务器,它访问数据库并尝试从数据库中获取记录。如果数据库调用返回错误,我们可以决定是包装该错误还是从 Web 服务发送我们自己的自定义错误。原创 2023-11-03 10:46:29 · 317 阅读 · 0 评论 -
Go的自定义错误
我们可以在函数和包中使用这些错误。我们还将使用标准库所采用的相同技术来提供有关自定义错误的更多详细信息。原创 2023-11-03 10:21:07 · 227 阅读 · 0 评论 -
Go的错误处理
错误表示程序中发生的任何异常情况。假设我们正在尝试打开一个文件,但该文件在文件系统中不存在。这是一种异常情况,表示为错误。Go 中的错误是普通的旧值。就像任何其他内置类型(例如 int、float64 等)一样,错误值可以存储在变量中、作为参数传递给函数、从函数返回等。错误使用内置error类型表示。我们将在本教程后面详细了解该error类型。原创 2023-11-03 10:19:51 · 278 阅读 · 0 评论 -
Go的Defer简介
Defer 语句用于在存在 defer 语句的周围函数返回之前执行函数调用。该定义可能看起来很复杂,但通过示例就很容易理解。原创 2023-11-03 10:17:56 · 336 阅读 · 0 评论 -
Go 中的 OOP - 多态性
Go 中的多态性是通过接口实现的。正如我们已经讨论过的,接口在 Go 中是隐式实现的。如果类型为接口中声明的所有方法提供定义,则该类型实现了接口。让我们看看 Go 中如何借助接口实现多态性。原创 2023-11-03 10:17:08 · 208 阅读 · 0 评论 -
Go语言的Mutex
在本教程中,我们将了解互斥体。我们还将学习如何使用解决竞争条件。原创 2023-10-26 15:02:50 · 358 阅读 · 0 评论 -
Go的Select语句
Select。原创 2023-10-26 11:35:25 · 231 阅读 · 0 评论 -
Go缓冲通道和工作池
我们在上一篇教程中讨论的所有通道基本上都是无缓冲的。正如我们在通道教程中详细讨论的那样,向无缓冲通道的发送和接收是阻塞的。可以创建带有缓冲区的通道。仅当缓冲区已满时,才会阻止发送到缓冲通道。类似地,只有当缓冲区为空时,来自缓冲通道的接收才会被阻止。make可以通过将附加容量参数传递给指定缓冲区大小的函数来创建缓冲通道。对于具有缓冲区的通道,上述语法中的容量应大于 0。无缓冲通道的容量默认为 0,因此我们在上一教程中创建通道时省略了容量参数。让我们编写一些代码并创建一个缓冲通道。原创 2023-10-25 10:59:05 · 370 阅读 · 0 评论 -
Go语言Channel
Channel可以被认为是 Goroutine 用来进行通信的管道。与水在管道中从一端流向另一端的方式类似,可以使用Channel从一端发送数据并从另一端接收数据。原创 2023-10-25 10:50:55 · 749 阅读 · 1 评论 -
Go语言Goroutine
Goroutine 是与其他函数或方法同时运行的函数或方法。Goroutines 可以被认为是轻量级线程。与线程相比,创建 Goroutine 的成本很小。因此,Go 应用程序同时运行数千个 Goroutine 是很常见的。原创 2023-10-24 14:15:00 · 368 阅读 · 1 评论 -
Go语音中并发介绍
并发性是指同时处理很多事情的能力。最好用一个例子来解释。让我们考虑一个人慢跑。假设他早上慢跑时,鞋带松了。现在,这个人停止跑步,系上鞋带,然后再次开始跑步。这是并发的一个典型例子。这个人能够同时处理跑步和系鞋带,也就是说,这个人能够同时处理很多事情并行性是同时做很多事情。这听起来可能与并发相似,但实际上是不同的。让我们通过相同的慢跑示例更好地理解它。在本例中,我们假设此人正在慢跑,并且还在听音乐。在这种情况下,这个人一边慢跑一边听音乐,也就是说他同时在做很多事情。这称为并行性。原创 2023-10-24 10:00:59 · 202 阅读 · 0 评论 -
Go语言接口
在 Go 中,接口是一组方法签名。当一个类型为接口中的所有方法提供定义时,就说它实现了该接口。它与 OOP 世界非常相似。接口指定类型应该具有哪些方法,类型决定如何实现这些方法。例如*,WashingMachine* 可以是具[方法签名Clean() 和Drying()的接口。任何为 Clean() 和Drying()方法提供定义的类型都被称为实现接口。原创 2023-10-23 10:52:54 · 353 阅读 · 0 评论 -
Go语言结构体
我们在这里指出这种格式只是为了了解这也是一种有效的语法上面的程序打印出。原创 2023-10-23 10:48:56 · 177 阅读 · 0 评论 -
Go 中的方法
方法只是一个`func`关键字和方法名称之间具有特殊接收者类型的**函数**,接收者可以是结构类型或非结构类型。原创 2023-10-20 10:43:02 · 260 阅读 · 0 评论 -
Go语言指针简介
指针是一个变量,它存储另一个变量的内存地址原创 2023-10-17 13:49:01 · 414 阅读 · 1 评论 -
Go语言 String 简介
字符串是Go 中的一段字节。可以通过将一组字符括在双引号内来创建字符串" "。Go 中的字符串符合 Unicode且采用 UTF-8 编码。让我们看一个创建string并打印它的简单示例。import ("fmt"上面的程序将打印。原创 2023-10-17 11:54:20 · 678 阅读 · 0 评论 -
Go语言 Map教程
Map是 Go 中的内置类型,用于存储键值对。让我们以一家拥有几名员工的初创公司为例。为简单起见,我们假设所有这些员工的名字都是唯一的。我们正在寻找一种数据结构来存储每个员工的工资。Map将非常适合此用例。员工的姓名可以是键,薪水可以是值。原创 2023-10-17 11:25:18 · 344 阅读 · 0 评论 -
Go语言可变参数函数
函数通常只接受固定数量的参数。可变参数函数是接受可变数量参数的函数。如果函数定义的最后一个参数以省略号*…*为前缀,则该函数可以接受该参数的任意数量的参数。只有函数的最后一个参数可以是可变参数。我们将在本教程的下一部分中了解为什么会出现这种情况。原创 2023-10-17 10:42:16 · 320 阅读 · 0 评论 -
Go语言数组和切片
不过,有一个问题可能会困扰您。如果切片由数组支持并且数组本身具有固定长度,那么切片为何具有动态长度。幕后发生的事情是,当新元素添加到切片时,会创建一个新数组。现有数组的元素将复制到此新数组,并返回此新数组的新切片引用。新切片的容量现在是旧切片的两倍)。下面的程序会让事情变得清楚。原创 2023-10-17 10:06:10 · 373 阅读 · 1 评论 -
Go语言Switch 语句
switch 是一个条件语句,它计算表达式并将其与可能匹配的列表进行比较,然后执行相应的代码块。它可以被认为是替换复杂if else子句的惯用方式。原创 2023-10-16 17:27:20 · 574 阅读 · 0 评论 -
Go语言循环语句
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。for是 Go 中唯一可用的循环。Go 没有其他语言(如 Java)中存在的 while 或 do while 循环。原创 2023-10-16 16:41:47 · 316 阅读 · 0 评论 -
Go语言条件语句
if是具有布尔条件的语句,如果该条件的计算结果为true,它将执行代码块。如果条件计算结果为false,它将执行备用 else 块。**在本教程中,我们将了解使用 if 语句的各种语法和方法。原创 2023-10-16 15:34:21 · 224 阅读 · 0 评论 -
Go语言函数和包介绍
我们已经看到 Go 程序只有一个包含一个 main函数和几个其他函数的文件。在现实场景中,这种将所有源代码写入单个文件的方法是不可扩展的。重用和维护以这种方式编写的代码变得不可能。这就是包的用处。包用于组织 Go 源代码,以提高可重用性和可读性。包是驻留在同一目录中的 Go 源文件的集合。包提供了代码划分,因此维护 Go 项目变得很容易。要使用自定义包,我们必须先导入它。导入路径是附加在包的子目录和包名称上的模块名称。原创 2023-10-13 17:32:09 · 264 阅读 · 0 评论 -
Go语言常量介绍
常量是在编程语言中,通过名字可以访问的一个数据,里面存储的数据在程序运行时不能修改。Go 语言的常量关键字是 const,常量的数值在编译阶段就已经确定。Go 语言中常量的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。函数是执行特定任务的代码块。函数接受输入,对输入执行一些计算,然后生成输出。通常每一个程序都包含有很多的函数,系统通过函数来划分不同功能,将整体任务进行分解。在 Go 语言中,函数的基本组成包括:关键字 func、函数名、参数列表、返回值、函数体和返回语句。原创 2023-10-13 16:00:20 · 444 阅读 · 0 评论 -
Go语言基本类型简介
数据类型主要用于声明变量和函数。Go 语言中有丰富的数据类型,除了整型、浮点型、布尔型和字符串基本类型,还有数组、切片、结构体、函数、map、channel等派生类型。本章将介绍基本数据类型。原创 2023-10-13 14:49:06 · 300 阅读 · 0 评论 -
Go语言变量学习
变量是为存储特定类型值的内存位置指定的名称。Go 中有多种声明变量的语法。让我们一一看看。原创 2023-10-13 11:47:21 · 185 阅读 · 0 评论 -
Go语言中入门Hello World以及IDE介绍
Go语言已经安装好了,当你开始学习Go语言时,编写一个"Hello, World!"程序是一个很好的入门点。下面将会提供了一些有关IDE和在线编辑器的信息,和如何使用Go语言编写并运行一个简单的"Hello, World!"程序的步骤。原创 2023-10-13 10:46:22 · 1644 阅读 · 0 评论 -
Go语言介绍与安装
Go也称为Golang,是由 Google 开发的一种开源、编译型、静态类型的编程语言。Go创造背后的关键人物是Rob Pike、 Ken Thompson和 Robert Griesemer。Go 于 2009 年 11 月公开发布。Go 是一种语法简单的通用编程语言,并由强大的标准库支持。Go 的关键领域之一是创建高度可用且可扩展的 Web 应用程序。Go 还可以用于创建命令行应用程序、桌面应用程序甚至移动应用程序。原创 2023-10-13 09:49:21 · 287 阅读 · 0 评论