Go
TechFlow
公众号:TechFlow
展开
-
Go语言 | 并发设计中的同步锁与waitgroup用法
今天是golang专题的第16篇文章,我们一起来聊聊golang当中的并发相关的一些使用。虽然关于goroutine以及channel我们都已经介绍完了,但是关于并发的机制仍然没有介绍结束。只有goroutine以及channel有时候还是不足以完成我们的问题,比如多个goroutine同时访问一个变量的时候,我们怎么保证这些goroutine之间不会互相冲突或者是影响呢?这可能就需要我们对资源进行加锁或者是采取其他的操作了。同步锁golang当中提供了两种常用的锁,一种是sync.Mutex另外一种原创 2020-09-14 09:19:48 · 491 阅读 · 0 评论 -
Go语言 | goroutine不只有基础的用法,还有这些你不知道的操作
今天是golang专题第15篇文章,我们来继续聊聊channel的使用。在我们的上篇文章当中我们简单介绍了golang当中channel的使用方法,channel是golang当中一个非常重要的设计,可以理解为生产消费者模式当中的队列。但channel和队列不一样的是,golang当中集成了一些其他的用法,使得我们的使用更加灵活,开发并发相关的功能更加简单。select机制我们来思考一个问题,假设我们的数据源有多个,也就是说我们可能会从多个入口获取数据,但是我们并不知道这些数据源当中哪个先把数据准备好原创 2020-09-07 10:56:00 · 249 阅读 · 0 评论 -
Golang | 简介channel常见用法,完成goroutine通信
今天是golang专题的第14篇文章,大家可以点击上方的专辑回顾之前的内容。今天我们来看看golang当中另一个很重要的概念——信道。我们之前介绍goroutine的时候曾经提过一个问题,当我们启动了多个goroutine之后,我们怎么样让goroutine之间保持通信呢?要回答这个问题就需要用到信道。channel信道的英文是channel,在golang当中的关键字是chan。它的用途是用来在goroutine之间传输数据,这里你可能要问了,为什么一定得是goroutine之间传输数据呢,函原创 2020-08-30 18:07:32 · 373 阅读 · 0 评论 -
Go语言 | CSP并发模型与Goroutine的基本使用
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题的第13篇文章,我们一起来聊聊golang当中的并发与Goroutine。在之前的文章当中我们介绍完了golang当中常用的使用方法和规范,在接下来的文章当中和大家聊聊golang的核心竞争力之一,并发模型与Goroutine。我们都知道并发是提升资源利用率最基础的手段,尤其是当今大数据时代,流量对于一家互联网企业的重要性不言而喻。串流显然是不行的,尤其是对于web后端这种流量的直接载体。并发是一定的,问题在于怎么执行并原创 2020-08-20 12:08:26 · 330 阅读 · 0 评论 -
Golang | 既是接口又是类型,interface是什么神仙用法?
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题的第12篇文章,我们来继续聊聊interface的使用。在上一篇文章当中我们介绍了面向对象的一些基本概念,以及golang当中interface和多态的实现方法。今天我们继续来介绍interface当中其他的一些方法。万能类型interface在Java以及其他语言当中接口是一种写法规范,而在golang当中,interface其实也是一种值,它可以像是值一样传递。并且在它的底层,它其实是一个值和类型的元组。这里原创 2020-08-11 11:48:11 · 268 阅读 · 0 评论 -
Golang | Go语言多态的实现与interface使用
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题的第11篇文章,我们一起来聊聊golang当中多态的这个话题。如果大家系统的学过C++、Java等语言以及面向对象的话,相信应该对多态不会陌生。多态是面向对象范畴当中经常使用并且非常好用的一个功能,如果你之前没有学过的话也没有关系,我们用一个简单的例子来说明一下。多态主要是用在强类型语言当中,像是Python这样的弱类型语言,变量的类型可以随意变化,也没有任何限制,其实区别不是很大。多态的含义对于Java或者是C原创 2020-07-31 19:48:44 · 583 阅读 · 0 评论 -
golang | Go语言入门教程——结构体初始化与继承
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题第10篇文章,我们继续来看golang当中的面向对象部分。在上一篇文章当中我们一起学习了怎么创建一个结构体,以及怎么给结构体定义函数,还有函数接收者的使用。今天我们来学习一下结构体本身的一些使用方法。初始化在golang当中结构体初始化的方法有四种。new关键字我们可以通过new关键字来创建一个结构体的实例,这种方法和其他语言比较类似,这样会得到一个空结构体指针,当中所有的字段全部填充它类型对应的零值。比如原创 2020-07-12 19:18:52 · 1182 阅读 · 0 评论 -
Golang简易教程——面向对象篇
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题的第9篇文章,我们一起来看看golang当中的面向对象的部分。在现在高级语言当中,面向对象几乎是不可或缺也是一门语言最重要的部分之一。golang作为一门刚刚诞生十年的新兴语言自然是支持面向对象的,但是golang当中面向对象的概念和特性与我们之前熟悉的大部分语言都不尽相同。比如Java、Python等,相比之下, golang这个部分的设计非常得简洁和优雅(仁者见仁),所以即使你之前没有系统地了解过面向对象,也没有关系,原创 2020-06-22 10:35:32 · 325 阅读 · 0 评论 -
Golang简单入门教程——函数进阶篇
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题的第八篇,我们来聊聊golang当中的函数。我们在之前的时候已经介绍过了函数的基本用法,知道了怎么样设计或者是定义一个函数,以及怎么样调用一个函数,还了解了defer的用法。今天这篇文章我们来继续深入这个话题,来看看golang当中关于函数的一些进阶的用法。返回error前文当中我们曾经提到过,在golang当中并没有try catch捕获异常的机制。在其他语言当中异常只有一种,可以通过try catch语句进行捕原创 2020-06-15 10:41:30 · 376 阅读 · 0 评论 -
Go语言基础教程——map篇
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题的第7篇文章,我们来聊聊golang当中map的用法。map这个数据结构我们经常使用,存储的是key-value的键值对。在C++/java当中叫做map,在Python中叫做dict。这些数据结构的名称虽然不经相同,背后的技术支撑也不一定一样,比如说C++的map是红黑树实现的,Java中的hashmap则是通过hash表。但是使用起来的方法都差不多,除了Java是通过get方法获取键值之外,C++、Python和gol原创 2020-06-02 10:10:37 · 354 阅读 · 0 评论 -
golang基础教程——字符串篇
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题的第6篇文章,这篇主要和大家聊聊golang当中的字符串的使用。字符串定义golang当中的字符串本质是只读的字符型数组,和C语言当中的char[]类似,但是golang为它封装了一个变量类型,叫做string。知道了string这个类型之后,我们就可以很方便地来初始化:var str stringstr1 := "hello world"var str2 = "hello world too"这里应该没什原创 2020-05-25 10:56:29 · 663 阅读 · 0 评论 -
手把手golang教程——数组与切片
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题的第五篇,这一篇我们将会了解golang中的数组和切片的使用。数组与切片golang当中数组和C++中的定义类似,除了变量类型写在后面。比如我们要声明一个长度为10的int型的数组,会写成这样:var a [10]int数组的长度定义了之后不能改变,这点和C++以及Java是一样的。但是在我们日常使用的过程当中,除非我们非常确定数组长度不会发生变化,否则我们一般不会使用数组,而是使用切片(slice)。切片原创 2020-05-17 08:47:46 · 448 阅读 · 0 评论 -
Golang入门教程——函数、循环与分支
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是Golang专题的第四篇,这一篇文章将会介绍golang当中的函数、循环以及选择判断的具体用法。函数在之前的文章当中其实我们已经接触过函数了,因为我们写的main函数本质上也是一个函数。只不过由于main函数没有返回值,也没有传参,所以省略了很多信息。func main() { fmt.Println("Hello World")}下面,我们来看看一个完整的函数是怎样的,这是golang官网上的例子。func add(x i原创 2020-05-09 22:18:06 · 378 阅读 · 0 评论 -
Golang——变量的声明与定义
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是Golang的第三篇,我们一起来看看Golang当中的变量。变量声明Golang当中的变量类型和C/C++比较接近,一般用的比较多的也就是int,float和字符串。Golang当中不一样的地方主要有几点,第一点是严格区分了int,int16,int32和int64,同样区分了float,float32和float64。前文...原创 2020-04-27 19:58:23 · 632 阅读 · 0 评论 -
Golang——详解Go语言代码规范
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是Golang专题的第二篇,我们来看看Go的语言规范。在我们继续今天的内容之前,先来回答一个问题。有同学在后台问我,为什么说Golang更适合分布式系统的开发?它和Java相比有什么优势吗?其实回答这个问题需要涉及很多概念,比如操作系统当中关于进程、线程、协程等很多概念。我们将这些内容进行简化,举一个最简单的线程的例子。我们来...原创 2020-04-20 20:37:42 · 700 阅读 · 0 评论 -
GoLang——Hello World,打开新世界的大门
本文始发于个人公众号:TechFlow,原创不易,求个关注今天是Go语言系列的第一篇文章,我们来聊聊这门新的语言和它的基础语法。浅谈Golang作为程序员而言,往往对于学习新的语言都是有抗拒的。如果你用惯了Java,那么你可能不太愿意去学Python,如果你刚学C或者C++可能你也会看不上Java。因为这个原因还会引发很多口水仗,这很正常。我当时写C++的时候也看不上Java,写了Java...原创 2020-04-13 21:10:29 · 817 阅读 · 0 评论