【Golang】✔️走进 Go 语言✔️ 第十五课 递归 & 接口

【Golang】✔️走进 Go 语言✔️ 第十五课 递归 & 接口,第1张

【Golang】✔️走进 Go 语言✔️ 第十五课 递归 & 接口 概述递归实现阶乘斐波那契数列 接口

概述

Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (第 15 课)

递归

递归 (Recursion) 就是在运行的过程中自己调用自己.

实现阶乘
package main

import "fmt"

func main() {

	// 递归实现阶乘
	result := factorial(5)

	//调试输出
	fmt.Println(result)

}

func factorial(n int) int {
	
	//递归
	if (n > 1) {
		return n * factorial(n - 1)
	} else {
		return 1
	}

}

输出结果:

120
斐波那契数列
package main

import "fmt"

func main() {

	// 递归实现斐波那契
	result := fiboacci(10)
	
	// 调试输出
	fmt.Print(result)

}

func fiboacci(num int) int {

	if num < 3 {
		return num
	} else {
		return fiboacci(num-1) + fiboacci(num-2)
	}
}

输出结果:

89
接口

接口 (Interface) 可以帮助我们把所有具有共性的方法定义在一起. Go 的接口类型是对其他类型行为的抽象和概括. 因为接口和类型不会和特定的实现细节绑定在一起, 通过这种抽象的方式我们可以让对象更加零花和具有适应能力. 任何其他类型只要实现了这些方法就是实现了这个接口. (和多态类似)

格式:

/* 定义接口 */
type interface_name interface {
   method_name1 [return_type]
   method_name2 [return_type]
   method_name3 [return_type]
   ...
   method_namen [return_type]
}

/* 定义结构体 */
type struct_name struct {
   /* variables */
}

/* 实现接口方法 */
func (struct_name_variable struct_name) method_name1() [return_type] {
   /* 方法实现 */
}
...
func (struct_name_variable struct_name) method_namen() [return_type] {
   /* 方法实现*/
}

例子:

package main

import "fmt"

// 定义接口
type student interface{
	study()
}

// 定义结构体
type good_student struct {}

type bad_student struct {}

type horrible_student struct {}

// 定义方法
func (stu good_student) study() {
	fmt.Println("好好学习, 天天向上")
}

func (stu bad_student) study() {
	fmt.Println("一天天的, 就知道打游戏")
}

func (stu horrible_student) study() {
	fmt.Println("烧杀抢掠, 无恶不作")
}

// 主函数
func main() {

	var stud1 student = new(good_student)
	stud1.study()

	var stud2 student = new(bad_student)
	stud2.study()

	var stud3 student = new(horrible_student)
	stud3.study()

}

输出结果:

好好学习, 天天向上
一天天的, 就知道打游戏
烧杀抢掠, 无恶不作

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存