• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






peteryan

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

随笔分类 -  go

上一页 1 2 3 下一页

go 语言
 
模块三 GO语言实战与应用-原子操作(上)
摘要:我们在前两篇文章中讨论了互斥锁、读写锁以及基于它们的条件变量,先来总结一下。 互斥锁是一个很有用的同步工具,它可以保证每一时刻进入临界区的 goroutine 只有一个。读写锁对共享资源的写操作和读操作则区别看待,并消除了读操作之间的互斥。 条件变量主要是用于协调想要访问共享资源的那些线程。当共享资 阅读全文
posted @ 2021-05-08 07:21 lvp 阅读(153) 评论(0) 推荐(0)
模块三 GO语言实战与应用-条件变量SYNC.COND(下)
摘要:今天我继续分享条件变量 sync.Cond 的内容。我们紧接着上一篇的内容进行知识扩展。 问题 1:条件变量的Wait方法做了什么? 在了解了条件变量的使用方式之后,你可能会有这么几个疑问。 为什么先要锁定条件变量基于的互斥锁,才能调用它的Wait方法? 为什么要用for语句来包裹调用其Wait方法 阅读全文
posted @ 2021-05-07 07:54 lvp 阅读(84) 评论(0) 推荐(0)
模块三 GO语言实战与应用-条件变量sync.Cond(上)
摘要:在上篇文章中,我们主要说的是互斥锁,今天我和你来聊一聊条件变量(conditional variable)。 前导内容:条件变量与互斥锁 我们常常会把条件变量这个同步工具拿来与互斥锁一起讨论。实际上,条件变量是基于互斥锁的,它必须有互斥锁的支撑才能发挥作用。 条件变量并不是被用来保护临界区和共享资源 阅读全文
posted @ 2021-05-07 07:49 lvp 阅读(149) 评论(0) 推荐(0)
模块三 GO语言实战与应用-sync.Mutex与sync.RWMutex
摘要:我在前面用 20 多篇文章,为你详细地剖析了 Go 语言本身的一些东西,这包括了基础概念、重要语法、高级数据类型、特色语句、测试方案等等。 这些都是 Go 语言为我们提供的最核心的技术。我想,这已经足够让你对 Go 语言有一个比较深刻的理解了。 从本篇文章开始,我们将一起探讨 Go 语言自带标准库中 阅读全文
posted @ 2021-05-07 07:34 lvp 阅读(222) 评论(0) 推荐(0)
模块三 GO语言实战与应用-更多的测试手法
摘要:在前面的文章中,我们一起学习了 Go 程序测试的基础知识和基本测试手法。这主要包括了 Go 程序测试的基本规则和主要流程、testing.T类型和testing.B类型的常用方法、go test命令的基本使用方式、常规测试结果的解读等等。 在本篇文章,我会继续为你讲解更多更高级的测试方法。这会涉及t 阅读全文
posted @ 2021-04-14 20:08 lvp 阅读(157) 评论(0) 推荐(0)
模块三 GO语言实战与应用-测试的基本规则和流程(下)
摘要:Go 语言是一门很重视程序测试的编程语言,所以在上一篇中,我与你再三强调了程序测试的重要性,同时,也介绍了关于go test命令的基本规则和主要流程的内容。今天我们继续分享测试的基本规则和流程。本篇代码和指令较多,你可以点击文章查看原文。 知识扩展 问题 1:怎样解释功能测试的测试结果? 我们先来看 阅读全文
posted @ 2021-04-14 19:58 lvp 阅读(160) 评论(0) 推荐(0)
模块三 GO语言实战与应用-测试的基本规则和流程(上)
摘要:在接下来的日子里,我将带你去学习在 Go 语言编程进阶的道路上,必须掌握的附加知识,比如:Go 程序测试、程序监测,以及 Go 语言标准库中各种常用代码包的正确用法。 从上个世纪到今日今时,程序员们,尤其是国内的程序员们,都对编写程序乐此不疲,甚至废寝忘食(比如我自己就是一个例子)。 因为这是我们普 阅读全文
posted @ 2021-04-09 07:54 lvp 阅读(110) 评论(0) 推荐(0)
模块二 GO语言进阶技术-PANIC函数、RECOVER函数以及DEFER语句(下)
摘要:我在前一篇文章提到过这样一个说法,panic 之中可以包含一个值,用于简要解释引发此 panic 的原因。 如果一个 panic 是我们在无意间引发的,那么其中的值只能由 Go 语言运行时系统给定。但是,当我们使用panic函数有意地引发一个 panic 的时候,却可以自行指定其包含的值。我们今天的 阅读全文
posted @ 2021-04-09 07:48 lvp 阅读(112) 评论(0) 推荐(0)
模块二 GO语言进阶技术-panic函数、recover函数以及defer语句(上)
摘要:我在上两篇文章中,详细地讲述了 Go 语言中的错误处理,并从两个视角为你总结了错误类型、错误值的处理技巧和设计方式。 在本篇,我要给你展示 Go 语言的另外一种错误处理方式。不过,严格来说,它处理的不是错误,而是异常,并且是一种在我们意料之外的程序异常。 前导知识:运行时恐慌 panic 这种程序异 阅读全文
posted @ 2021-04-09 07:38 lvp 阅读(200) 评论(0) 推荐(0)
模块二 GO语言进阶技术-错误处理(下)
摘要:在上一篇文章中,我们主要讨论的是从使用者的角度看“怎样处理好错误值”。那么,接下来我们需要关注的,就是站在建造者的角度,去关心“怎样才能给予使用者恰当的错误值”的问题了。 知识扩展 问题:怎样根据实际情况给予恰当的错误值? 我们已经知道,构建错误值体系的基本方式有两种,即:创建立体的错误类型体系和创 阅读全文
posted @ 2021-04-09 07:31 lvp 阅读(63) 评论(0) 推荐(0)
模块二 GO语言进阶技术-错误处理(上)
摘要:提到 Go 语言中的错误处理,我们其实已经在前面接触过几次了。 比如,我们声明过error类型的变量err,也调用过errors包中的New函数。今天,我会用这篇文章为你梳理 Go 语言错误处理的相关知识,同时提出一些关键问题并与你一起探讨。 我们说过error类型其实是一个接口类型,也是一个 Go 阅读全文
posted @ 2021-04-09 07:22 lvp 阅读(131) 评论(0) 推荐(0)
模块二 GO语言进阶技术-if语句、for语句和switch语句
摘要:在上两篇文章中,我主要为你讲解了与go语句、goroutine 和 Go 语言调度器有关的知识和技法。 内容很多,你不用急于完全消化,可以在编程实践过程中逐步理解和感悟,争取夯实它们。 现在,让我们暂时走下神坛,回归民间。我今天要讲的if语句、for语句和switch语句都属于 Go 语言的基本流程 阅读全文
posted @ 2021-03-19 17:43 lvp 阅读(223) 评论(0) 推荐(0)
模块二 GO语言进阶技术-GO语句及其执行规则(下)
摘要:在上一篇文章中,我们讲到了 goroutine 在操作系统的并发编程体系,以及在 Go 语言并发编程模型中的地位和作用等一系列内容,今天我们继续来聊一聊这个话题。 知识扩展 问题 1:怎样才能让主 goroutine 等待其他 goroutine? 我刚才说过,一旦主 goroutine 中的代码执 阅读全文
posted @ 2021-02-25 20:36 lvp 阅读(103) 评论(0) 推荐(0)
模块二 GO语言进阶技术-go语句及其执行规则(上)
摘要:你很棒,已经学完了关于 Go 语言数据类型的全部内容。我相信你不但已经知晓了怎样高效地使用 Go 语言内建的那些数据类型,还明白了怎样正确地创造自己的数据类型。 对于 Go 语言的编程知识,你确实已经知道了不少了。不过,如果你真想玩转 Go 语言还需要知道它的一些特色流程和语法。 尤其是我们将会在本 阅读全文
posted @ 2021-02-25 20:30 lvp 阅读(164) 评论(0) 推荐(0)
模块二 GO语言进阶技术-关于指针的有限操作
摘要:在前面的文章中,我们已经提到过很多次“指针”了,你应该已经比较熟悉了。不过,我们那时大多指的是指针类型及其对应的指针值,今天我们讲的则是更为深入的内容。 让我们先来复习一下。 type Dog struct { name string } func (dog *Dog) SetName(name s 阅读全文
posted @ 2021-02-25 20:23 lvp 阅读(96) 评论(0) 推荐(0)
模块二 GO语言进阶技术-接口类型的合理运用
摘要:前导内容:正确使用接口的基础知识 在 Go 语言的语境中,当我们在谈论“接口”的时候,一定指的是接口类型。因为接口类型与其他数据类型不同,它是没法被实例化的。 更具体地说,我们既不能通过调用new函数或make函数创建出一个接口类型的值,也无法用字面量来表示一个接口类型的值。 对于某一个接口类型来说 阅读全文
posted @ 2021-02-25 20:11 lvp 阅读(162) 评论(0) 推荐(0)
模块二 GO语言进阶技术-结构体及其方法的使用法门
摘要:我们都知道,结构体类型表示的是实实在在的数据结构。一个结构体类型可以包含若干个字段,每个字段通常都需要有确切的名字和类型。 前导内容:结构体类型基础知识 当然了,结构体类型也可以不包含任何字段,这样并不是没有意义的,因为我们还可以为类型关联上一些方法,这里你可以把方法看做是函数的特殊版本。 函数是独 阅读全文
posted @ 2021-02-25 20:02 lvp 阅读(201) 评论(0) 推荐(0)
模块二 GO语言进阶技术-使用函数的正确姿势
摘要:在前几期文章中,我们分了几次,把 Go 语言自身提供的,所有集合类的数据类型都讲了一遍,额外还讲了标准库的container包中的几个类型。 在几乎所有主流的编程语言中,集合类的数据类型都是最常用和最重要的。我希望通过这几次的讨论,能让你对它们的运用更上一层楼。 从今天开始,我会开始向你介绍使用 G 阅读全文
posted @ 2021-02-19 19:42 lvp 阅读(111) 评论(0) 推荐(0)
模块二 GO语言进阶技术-通道的高级玩法
摘要:我们已经讨论过了通道的基本操作以及背后的规则。今天,我再来讲讲通道的高级玩法。 首先来说说单向通道。我们在说“通道”的时候指的都是双向通道,即:既可以发也可以收的通道。 所谓单向通道就是,只能发不能收,或者只能收不能发的通道。一个通道是双向的,还是单向的是由它的类型字面量体现的。 还记得我们在上篇文 阅读全文
posted @ 2021-02-09 22:10 lvp 阅读(183) 评论(0) 推荐(0)
模块二 GO语言进阶技术-通道的基本操作
摘要:作为 Go 语言最有特色的数据类型,通道(channel)完全可以与 goroutine(也可称为 go 程)并驾齐驱,共同代表 Go 语言独有的并发编程模式和编程哲学。 Don’t communicate by sharing memory; share memory by communicati 阅读全文
posted @ 2021-02-09 21:59 lvp 阅读(160) 评论(0) 推荐(0)
 

上一页 1 2 3 下一页