Go 语言面向对象编程系列教程(四) —— 通过组合实现类的继承和方法重写

Go 语言不是像 PHP 等传统面向编程实现那样通过 extends 关键字来显式定义子类与父类之间的继承关系,而是通过组合方式实现类似功能,显式定义继承关系的弊端有两个:一个是导致类的层级复杂,另一个是影响了类的扩展性,设计模式里面推荐的也是通过组合来替代继承提高类的扩展性。 我们来看一个例子,现在有一个父类 Animal,有一个属性 name 用于表示名称,和三个成员方法,分别用来获...

Go 语言面向对象编程系列教程(三) —— 为基本数据类型添加成员方法

在 Go 语言中,你可以给任意类型(包括基本类型,但不包括指针类型)添加成员方法,但是如果是基本类型的话,需要借助 type 关键字对类型进行再定义,例如: type Integer int func (a Integer) Equal(b Integer) bool { return a == b } 注意,这个时候 Integer 已经是一个新的类型了,这与 type I...

Go 语言面向对象编程系列教程(二) —— 类的定义、初始化和成员方法

上篇教程我们简单给大家介绍了 Go 语言的类型系统,关于基础类型、复合类型以及值语义和引用语义我们前 面在数据类型系列里面已经基本都介绍过了,接下来,我们就与 Go 语言面向对象编程相关的特性展开介绍。 类的定义和初始化 Go 语言的面向对象编程与我们之前所熟悉的 PHP、Java 那一套完全不同,没有 class、extends、implements 之类的关键字和相应的概念,而是借助...

Go 语言面向对象编程系列教程(一) —— 类型系统概述

对于面向对象编程的支持,Go 语言的实现可以说是完全颠覆了以往我们对面向对象编程的认知,下面我们先通过对 Go 语言类型系统的介绍让你有一个整体的认知。 Go 语言面向对象编程设计得简洁而优雅。 简洁之处在于,Go 语言并没有沿袭传统面向对象编程中的诸多概念,比如类的继承、接口的实现、构造函数和析构函数、隐藏的 this 指针等,也没有 public、protected、private ...

Go 语言函数式编程系列教程(二十三) —— 函数篇:递归函数与性能优化

递归函数的编写思路 很对编程语言都支持递归函数,所谓递归函数指的是在函数内部调用函数自身的函数,从数学解题思路来说,递归就是把一个大问题拆分成多个小问题,再各个击破,在实际开发过程中,某个问题满足以下条件就可以通过递归函数来解决: 一个问题的解可以被拆分成多个子问题的解 拆分前的原问题与拆分后的子问题除了数据规模不同,求解思路完全一样 子问题存在递归终止条件 需要注意的是,编写递归函...

Go 语言函数式编程系列教程(二十二) —— 函数篇:系统内置函数

Go 语言提供了一些不需要导入任何包就可以直接使用的内置函数。我们把这些内置函数做一个简单的分类,如下表所示: 名称 说明 close 用于在管道通信中关闭一个管道 len、cap len 用于返回某个类型的长度(字符串、数组、切片、字典和管道),cap 则是容量的意思,用于返回某个类型的最大容量(只能用于数组、切片和管道) new、make new 和 make ...

Go 语言函数式编程系列教程(二十一) —— 函数篇:匿名函数与闭包

匿名函数 熟悉 Laravel 框架(一个 PHP Web 框架)的同学对匿名函数应该很熟悉,Laravel 框架中有着大量匿名函数的应用场景,比如路由定义、绑定实现到接口等: // 路由定义 Route::get('hello', function () { return '你好,欢迎访问 Laravel 学院!'; }); // 绑定实现到接口 $this->app-...

Laravel-Admin 最全安装方法与汉化教程图解

大神绕道,新手速来看 https://github.com/imnotdoubi/laravel 内附文档(你懂的)喜欢的话可以给个 Star 1、有很多朋友在安装的时候,直接运行下面的 composer 报错 Could not open input file: artisan 解决方法: 这里应该是你先本地安装一个 larave...

Go 语言函数式编程系列教程(二十) —— 函数篇:变长参数

所谓变长参数指的是函数参数的数量不确定,可以按照需要传递任意数量的参数到指定函数,比如 fmt.Printf 函数的参数列表显然就是个变长参数。 PHP 中的变长参数简介 PHP 函数也支持变长参数,在 PHP 5.5 及更早版本中,可以在定义函数时设置参数为空,然后在函数体中通过 func_num_args()、func_get_arg() 以及 func_get_args() 之类的...

Go 语言函数式编程系列教程(十九) —— 函数篇:函数的传参和返回值

上篇教程我们介绍了 Go 语言中函数的基本定义和调用,其中也涉及到了函数的传参和返回值,只不过那里演示的是最简单的场景,今天我们就更复杂的传参和返回值进行介绍。 按值传参和引用传参 Go 语言默认使用按值传参来传递参数,也就是传递参数的一个副本,函数接收该参数后,可能在处理过程中对参数值做调整,但这不会影响原来的变量值,我们还是以上篇教程的 add 函数为基础作为示例: func add...