Golang✔️走进 Go 语言✔️ 第十五课 递归 & 接口
Posted 我是小白呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()
}
输出结果:
好好学习, 天天向上
一天天的, 就知道打游戏
烧杀抢掠, 无恶不作
以上是关于Golang✔️走进 Go 语言✔️ 第十五课 递归 & 接口的主要内容,如果未能解决你的问题,请参考以下文章