Now your life, life in the future to play you, now do not work hard, the future suck. 现在不玩命,将来命玩你,现在不努力,未来不给力。 指针 vs 值类型实现接口 我们在第1部分中讨论的所有示例接口都是使用值receivers 实现的。也可以使用指针receivers 来实现接口。在使用指针receivers 实现接口时需要注意的细微之处。让我们了解使用下面的程序。 package main import "f...
-
Golang interface接口全面理解(二)
-
Golang interface接口全面理解(一)
There are three kinds of time: the future is late, and now it is flying like an arrow. The past will never stand still. 时间的步伐有三种:未来姗姗来迟,现在像箭一般飞逝,过去永远静立不动。 什么是interface 在面向对象编程中,可以这么说:“接口定义了对象的行为”, 那么具体的实现行为就取决于对象了。 在Go中,接口是一组方法签名。当一个类型为接口中的所有方法提供定义时,...
-
熟读这5个开源项目就是合格的GO语言工程师!
写代码同写文章一样,既是技术活,又是艺术活。不是懂了语法能够写出优秀的代码,也正如不是认识字就能够写出优美的文章一样。那个作家饱读史书,那个架构师不是在代码堆里和Bug堆里泡出来的。 因此,程序员刚入门除了读书外,阅读好的代码很重要。阅读优秀的代码可以了解大牛开发的思路,软件架构和语言技巧等。因此,本文针对Go语言,推荐大家5个非常优秀的开源项目,这些开源项目不仅应用广泛,而且其中所用的技术有很多基础技术,是做其它任何项目都不可或缺的。 image Codis Codis是一个分布式Redis解...
-
图解Go select语句原理
Go 的select语句是一种仅能用于channl发送和接收消息的专用语句,此语句运行期间是阻塞的;当select中没有case语句的时候,会阻塞当前的groutine。所以,有人也会说select是用来阻塞监听goroutine的。 还有人说:select是Golang在语言层面提供的I/O多路复用的机制,其专门用来检测多个channel是否准备完毕:可读或可写。 以上说法都正确。 ## I/O多路复用 我们来回顾一下是什么是``I/O多路复用``。 ### 普通多线...
-
golang之channel
前言 本文算是对Diving Deep Into The Golang Channels的翻译,也算加强对channel的了解和使用。 使用channel func goRoutineA(a <- chan int){ val := <- a fmt.Println("goRoutineA received the data", val) } func main(){ ch := make(chan int) // 定义一个channel:接收int类型 go goRoutineA(ch) ti...