
老孙Go语言学习笔记
文章平均质量分 61
老孙正经胡说
万博智云联合创始人&CTO;连续创业者;阿里云解决方案领域MVP,腾讯云TVP;Ceph中国社区联合创始人,Ceph基金会中国区大使。
展开
-
8.5 Go语言中数据库操作
Go语言操作数据的两种方法。原创 2023-02-06 22:00:00 · 859 阅读 · 0 评论 -
8.1 Go语言中文件操作
os包提供了处理文件的API接口,遵循Unix标准,平台无关,所有操作系统都可以使用。错误处理上是Go语言独有的,失败时,返回的是错误类型而非系统错误编号,对于调试很有帮助。和其他语言类似,读取文件主要使用Open, Read等函数,文件处理最底层是基于原始字节的,在这个抽象之上,可以进一步构建更方便的接口。我们尝试使用一个文件拷贝的样例,来学习写入的方式,这里除了刚才使用的os包,还是用了io包,最终将显示一共拷贝了多少字节。改代码执行后将生成一个为空的sample.txt文件。原创 2023-01-29 17:06:00 · 375 阅读 · 0 评论 -
7.4 Go语言中并发运行数量
自 Go 1.5 开始,Go的GOMAXPROCS 默认值已经设置为CPU的核数,这允许我们的Golang程序充分使用机器的每一个 CPU, 最大程度的提高我们程序的并发性能。Golang的调度器采用M-P-G。更多详细的原理部分,请查阅参考文档,在一些特定场景下(例如容器),可能会遇到与并发量有关的问题,需要合理的对参数进行设定。通过设置GOMAXPROCS环境变量可以控制P的数量。来看下程序中通过runtime获取该变量。原创 2023-01-31 08:00:00 · 219 阅读 · 0 评论 -
7.3 Go语言中通过WaitGroup控制并发
Channel能够很好的帮助我们控制并发,但是在开发习惯上与显示的表达不太相同,所以在Go语言中可以利用sync包中的WaitGroup实现并发控制,更加直观。如果不想在函数中传递WaitGroup,也可以采用以下这种方式,通过并发匿名函数的方式,在主函数逻辑中对并发进行精准控制。WaitGroup传入给函数时,需要以指针方式传递,否则会造成Deadlock。我们将之前的示例加以改造,引入sync.WaitGroup来实现并发控制。原创 2023-01-30 08:00:00 · 157 阅读 · 0 评论 -
7.2 什么是Go语言中的管道Channel
为了解决与Groutines间的通讯问题,Go中提供给了管道Channel。Channel有点像是Linux系统的双向通讯管道,既可以发送消息,也可以接受消息。管道需要明确处理的数据类型,也就是在声明管道时必须还要声明类型。})原创 2023-01-29 08:00:00 · 244 阅读 · 0 评论 -
7.1 Go语言中什么是Goroutines
程序运行后,虽然mian函数和ready函数中都print了开始执行的语句,但是很明显,在Goroutine内的函数并没有执行完成。所以我们为了更精准的控制Goroutine的并发,需要使用Channel进行控制。我们再通过这个例子看一下,这个例子中,main函数需要等待2秒,而Goroutine内执行的函数则需要等待5秒。上面的示例中,我们在主函数刻意的等待了3秒,如果没有这3秒会发生什么呢?与普通函数类似,我们调用Goroutines时只需要在函数前加上go关键字。原创 2023-01-28 08:00:00 · 95 阅读 · 0 评论 -
6.4 Go语言中的空接口
空接口即interface{},也就是其中并没有对任务方法进行描述,既然没有约束,那么任务对象都满足空接口,简言之,空接口就是通配符。原创 2022-11-26 09:49:55 · 107 阅读 · 0 评论 -
6.4 Go语言中的空接口
空接口即interface{},也就是其中并没有对任务方法进行描述,既然没有约束,那么任务对象都满足空接口,简言之,空接口就是通配符。原创 2022-11-26 09:47:20 · 210 阅读 · 0 评论 -
6.3 利用Go语言接口进行Mock单元测试
首先我们先定义一个接口,定义接口的目的是能让我们的Mock结构体生效。原创 2022-11-25 08:33:05 · 307 阅读 · 0 评论 -
6.2 如何理解Go语言中的接口
深入理解Go语言接口与传统语言中类的区别。原创 2022-11-24 20:22:16 · 278 阅读 · 0 评论 -
6.1 Go语言中接口使用样例
正如前文提到,Go语言并没有类的定义,接口可以说Go语言最接近于类的实现方式,但是更轻量。对于接口的学习,如果从原理层面理解学习起来比较慢,所以建议先从代码使用维度进行理解,最终回归到原理层面加深理解。原创 2022-11-23 20:00:00 · 372 阅读 · 0 评论 -
5.5 Go语言中的类型转换
本文介绍Go语言常用的类型转换方式。原创 2022-07-29 08:00:00 · 120 阅读 · 0 评论 -
5.4 Go语言中自定义类型与结构体(Struct)
Go语言是面向对象语言吗?本节将介绍Go语言中自定义类型与结构体的使用方法。原创 2022-07-28 08:00:00 · 262 阅读 · 0 评论 -
5.3 Go语言中构造函数与复合声明(Constructors and composite literals)
本节将重点介绍构造函数和复合声明的使用方法原创 2022-07-27 08:00:00 · 311 阅读 · 0 评论 -
5.2 Go语言中的内存分配
本节主要对Go语言中内存主动分配的方法进行讲解和比较。原创 2022-07-25 21:42:30 · 268 阅读 · 0 评论 -
5.1 Go语言中的指针
从本节开始讲进入Go语言的进阶课程。Go语言中仍然有指针,但是没有指针运算,所以不同于C语言指针,更像是引用。Go语言调用函数时,是传递的值,所以为了提高效率,仍然保留指针。原创 2022-07-25 21:41:17 · 345 阅读 · 0 评论 -
4.6 使用第三方Go Modules
本节讲通过Go语言中Gin框架的使用介绍如何在Go项目中引用第三方包来加速项目开发。原创 2022-07-22 08:00:00 · 521 阅读 · 0 评论 -
4.5 使用Go Modules自定义模块
如何使用Go Modules定义模块,摆脱路径的约束。原创 2022-07-21 08:00:00 · 1193 阅读 · 0 评论 -
4.4 Go语言中的单元测试
单元测试是为了帮助开发人员检测逻辑是否正确的重要手段,本节主要介绍Go语言中如何实现单元测试。原创 2022-07-20 08:00:00 · 412 阅读 · 0 评论 -
4.3 Go语言包(Packages)文档
代码内文档是代码完成的重要组成部分,本节主要介绍Go语言中如何写文档。原创 2022-07-19 08:00:00 · 230 阅读 · 0 评论 -
4.2 Go语言中包(Packages)的命名
本节介绍Go语言包的命名并继续使用示例讲述包名与目录的关系。原创 2022-07-18 08:00:00 · 2104 阅读 · 0 评论 -
4.1 Go语言中包(Packages)基础知识
本章开始介绍Go语言的包和模块的使用方法。原创 2022-07-17 20:00:00 · 372 阅读 · 0 评论 -
3.8 Go语言中函数可变参数(Variadic Parameter)
我们经常在Go中看到这种方式,首先三个点的英文是Ellipsis,翻译成中文叫做“省略”,可能各位看到这个词就比较好理解三个点的作用了。在不同的位置上有不同的作用,比如在上述数组的定义中,省略了数组长度的声明,而是根据数组初始化值来决定。在Go语言中,也有类似的实现方式,只不过Go中只能实现类似*args的数组方式,而无法实现**kwargs的方式。在Python中,在函数参数不确定数量的情况下,可以使用如下方式动态在函数内获取参数,args实质上是一个list,而kwargs是一个dict。...原创 2022-07-16 20:00:00 · 539 阅读 · 0 评论 -
3.7 Go语言中的异常处理(Panic和recovering)
本节主要讲解Go语言中的异常处理,Go语言中并没有try...catch机制,需要通过panic()和recover()机制实现。原创 2022-07-13 08:00:00 · 686 阅读 · 0 评论 -
3.6 Go语言函数的延迟调用(Deferred Code)
本篇重点介绍Go语言中函数的延迟调用,可以帮助开发人员优化代码结构,并进行一场处理。原创 2022-07-12 08:00:00 · 258 阅读 · 0 评论 -
3.5 Go语言中将函数作为值使用
Go语言中可以将函数作为值使用,可以帮助开发人员构建出回调函数。原创 2022-07-11 20:31:19 · 289 阅读 · 0 评论 -
3.4 Go语言中变量作用域(Scope)
Go语言中变量的作用域。原创 2022-07-11 20:29:51 · 257 阅读 · 0 评论 -
3.3 Go语言中的main函数和init函数
本节主要讲述Go语言中的main函数和init函数原创 2022-07-07 08:00:00 · 395 阅读 · 0 评论 -
3.2 Go语言中的匿名函数
本节主要讲述Go语言中匿名函数的使用方法原创 2022-07-06 08:00:00 · 222 阅读 · 0 评论 -
3.1 Go语言中的函数与方法
本节开始讲介绍Go语言函数的使用方法,本节主要讲述基本使用方法。原创 2022-07-05 08:00:00 · 478 阅读 · 0 评论 -
2.10 Go语言中的注释、关键字、内置函数和操作符
本节主要讲解Go语言基础知识中的注释、关键字、内置函数和操作符的知识,适当记忆就可以,如果忘了回来查查就好。原创 2022-07-04 12:00:00 · 215 阅读 · 0 评论 -
2.9 Go语言中的Switch
本节主要讲述Go语言控制结构中switch的使用方法。原创 2022-06-30 06:59:30 · 640 阅读 · 0 评论 -
2.8 Go语言中的for循环, break和continue
本节讲述Go语言中的控制结构for使用方法。原创 2022-06-30 06:58:28 · 278 阅读 · 0 评论 -
2.7 Go语言中的if-else
本节开始讲解Go语言中的控制结构,首先是if else原创 2022-06-30 06:57:09 · 182 阅读 · 0 评论 -
2.6 Go语言中的Map
Go语言中的哈希Map的使用方法原创 2022-06-25 08:57:30 · 105 阅读 · 0 评论 -
2.5 Go语言中的切片(Slice)
本节讲解Go语言切片(Slice)的使用方法原创 2022-06-25 08:56:18 · 538 阅读 · 0 评论 -
2.4 Go语言中的数组(Array)
Go语言中数组的使用方法原创 2022-06-23 21:56:09 · 219 阅读 · 0 评论 -
2.3 Go语言中的字符型和常量定义
本节主要讲述Go语言中关于字符类型的使用方法原创 2022-06-23 21:55:19 · 500 阅读 · 0 评论 -
2.2 Go语言中的布尔型和整型
本节主要讲述Go语言中的布尔型和整型的使用方法。原创 2022-06-23 21:54:11 · 514 阅读 · 0 评论 -
2.1 Go语言中的变量定义
Go语言中的变量定义的基本语法原创 2022-06-23 21:53:10 · 127 阅读 · 0 评论