Go 语言面向对象编程系列教程(十) —— 接口篇:空接口及其使用场景

熟悉 Java 的同学应该都知道,在这个号称血统最纯正的面向对象编程语言中,「万事万物皆对象」,并且所有类都继承自祖宗类「Object」,所以 Object 类型变量可以指向任何类的实例。 Go 语言打破了传统面向对象编程中类与类之间继承的概念,而是通过组合实现方法和属性的重用,所以不存在类似的继承关系树,也就没有所谓的祖宗类,而且类与接口之间也不再通过 implements 关键字强制...

Go 语言面向对象编程系列教程(七) —— 接口篇:通过接口赋值实现接口与实现类的映射

上篇教程我们介绍了接口定义及实现,和 PHP 一样,Go 语言的接口不支持直接实例化,只能通过实现类实现接口声明的所有方法,不过不同之处在于 Go 语言接口支持赋值操作,从而快速实现接口与实现类的映射,与之相比,PHP 要实现接口与实现类的映射,只能基于 IoC 容器通过依赖注入实现,就像 Laravel 框架底层服务容器所做的那样,要复杂的多。 接口赋值在 Go 语言中分为如下两种情况...

Go 语言函数式编程系列教程(二) —— 常量和枚举

在 Go 语言中,常量是指编译期间就已知且不可改变的值,常量只可以是数值类型(包括整型、 浮点型和复数类型)、布尔类型、字符串类型等标量类型。和 PHP 一样,在 Go 语言中,我们可以通过 const 关键字来定义常量(遵循 C 语言的约定)。 常量定义 通过 const 关键字定义常量时,可以指定常量类型,也可以省略(底层会自动推导),常见的常量定义方式如下: const Pi fl...

Go 语言函数式编程系列教程(一) —— 变量声明、初始化、赋值及作用域

变量是几乎所有编程语言中最基本的组成元素。从本质上说,变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。 由于 Go 语言是强类型静态语言,所以变量声明与赋值方式与 PHP 相比有很大的区别。 变量声明 对于纯粹的变量声明,Go 语言引入了关键字 var,并且将类型信息放在变量名之后,此外,变量声明语句不需要使...