prince的文章

34、Golang 教程 - 反射

反射是go语言中的高级特性之一,我会尽量将它讲的通俗易懂。 本教程包含以下部分: 什么是反射? 为何需要在运行时检查变量的值,并确定变量的类型? reflect 包 reflect.Type 和 reflect.Value reflect....

33、Golang 教程 - 头等函数

什么是头等函数 支持头等函数的编程语言,可以把函数赋值给变量,也可以把函数作为其它函数的参数或者返回值。Go 语言支持头等函数。 本教程我们会讨论头等函数的语法和用例。 匿名函数 让我们先从一个简单例子开始:将函数赋值给一个变量。 pack...

32、Golang 教程 - panic 和 recover

什么是 panic? 在Go 程序中,一般是使用错误来处理异常情况。对于程序中出现的大部分异常情况,错误就已经够用了。 但在有些情况,当程序发生异常时,无法继续运行。在这种情况下,我们会使用 panic 来终止程序。当函数发生 panic ...

31、Golang 教程 - 自定义错误

在上一个教程中,我们学习了 Go 中的错误是如何表示的,以及如何处理标准库里的错误。我们还学习了从标准库的错误中提取更多的信息。 本教程介绍如何创建我们自己的自定义错误,我们可以在我们创建的函数和包中使用它们。我们会使用与标准库中相同的技术...

30、Golang 教程 - 错误处理

什么是错误? 错误表示程序中的异常情况。假设我们正在尝试打开文件,文件系统中却不存在该文件。这是一种异常情况,它用错误来表示。 在Go 中,错误一直是很常见的。错误用内建的 error 类型来表示。 就像其他的内建类型(如 int、floa...

29、Golang 教程 - defer

什么是 defer? defer语句的作用:含有defer语句的函数结束之前调用另外一个函数。定义看起来很复杂,我们通过一个例子就很容易理解。 package main import ( "fmt" ) func fin...

28、Golang 教程 - go中的OOP-多态

Go中的多态性是在接口interface的帮助下实现的。正如我们已经讨论过的,接口可以在Go中隐式实现。如果一个类型定义了某个接口中声明的所有方法,则该类型实现了这个接口。让我们看看,利用接口,如何在Go中实现多态性。 使用接口实现多态 任...

27、Golang 教程 - go中的OOP-组合取代继承

Go语言不支持继承,但是它支持组合。组合的定义是“放在一起”,组合的一个例子是车的组成,一辆车是由轮子,发动机和其他组件组合而成。 结构体嵌套组合 Go中的组合可以通过将一种结构体类型嵌入另一种结构体类型来实现。 博客文章是组合的经典例子。...

26、Golang 教程 - go中的OOP-结构体取代类

Go不是纯粹的面向对象编程语言。下面摘自Go的FAQs 解答了Go是否是面向对象的问题。 翻译:可以说是,也可以说不是。虽然GO具有类型和方法,并且允许面向对象的编程风格,但是没有类型层次结构。Go中的”接口”概念提供了一种不同的特性,我们...

25、Golang 教程 - Mutex

在本教程中,我们将了解Mutex(互斥锁)。我们还将学习如何使用Mutex和信道解决竞争问题。 临界区 在学习Mutex之前,了解并发编程中关键概念非常重要。当程序并发运行时,多个协程不应该同时访问修改共享资源的代码。修改共享资源的这段代码...