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

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

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-...

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

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

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

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

Go 语言函数式编程系列教程(十八) —— 函数篇:函数的基本定义和调用

几乎所有编程语言都支持函数,编写函数的目的在于将复杂的问题分解为一系列简单的任务来处理,此外同一个函数还可以被多次复用,这一结构在面向过程的函数式编程中至关重要。同为类 C 语言,Go 语言的函数和 PHP 函数的基本结构差不多,只是具体细节有所差异,在 Go 语言中,函数的基本组成为:关键字 func、函数名、参数列表、返回值、函数体和返回语句,作为强类型语言,无论是参数还是返回值,在...

Go 语言函数式编程系列教程(十七) —— 流程控制篇:跳转语句

break 与 continue 语句 和 PHP 一样,Go 语言支持在循环语句中通过 break 语句跳出循环,通过 continue 语句进入下一个循环。 关于 break 的基本使用示例我们在上篇教程中已经演示过,break 的默认作用范围是该语句所在的最内部的循环体: arr := [][]int{{1,2,3},{4,5,6},{7,8,9}} for i := 0; i &...

Go 语言函数式编程系列教程(十六) —— 流程控制篇:循环语句

基本使用 与其它编程语言不同的是,Go 语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构。关键字 for 的基本使用方法与 PHP 类似,只是循环条件不含括号,比如我们要计算 1 到 100 之间所有数字之后,可以这么做: sum := 0 for i := 1; i <= 100; i++ { sum += i } fmt.P...

Go 语言函数式编程系列教程(十五) —— 流程控制篇:分支语句

分支语句会根据传入条件的不同,选择不同的分支代码执行。Go 语言的分支语句和 PHP 类似,只是不需要在每个分支结构中显式通过 break 语句退出: switch var1 { case val1: ... case val2: ... default: ... } 我们可以通过分支语句改写上篇教程的示例代码:...