Go语言学习——函数递归、类型别名和自定义类型
递归
package main
import "fmt"
// 递归:自己调用自己
// 递归适合处理那种问题相同、问题规模越来越小的场景
// 递归一定要有一个明确的退出条件
// 永远不要高估自己
// 3! = 3 * 2 * 1 = 3* 2!
// 4! = 4 * 3 * 2 * 1 = 4 * 3!
// 5! = 5 * 4 * 3 * 2 * 1 = 5 * 4!
// 计算n的阶乘
func f(n uint64) uint64 {
if n <= 1 {
return 1
}
return n * f(n-1)
}
// 上台阶的面试题
// n个台阶,一次可以走一步,也可以走两步,有多少种走法
func taijie(n uint64) uint64 {
// 如果只有一个台阶 就一种走法
if n == 1 {
return 1
}
if n == 2 {
return 2
}
return taijie(n-1) + taijie(n-2)
}
func main(){
ret := f(5)
fmt.Println(ret)
res := taijie(3)
fmt.Println(res)
}
结构体(struct)
类型别名和自定义类型
Go语言中可以使用type关键字来定义自定义类型
类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型
package main
import "fmt"
// 自定义类型和类型别名
// type 后面跟的是类型
type myInt int // 自定义类型 编译完之后也保留
type yourInt = int // 类型别名 只在代码编写过程中有效 编译完就没有了
func main () {
var n myInt
n = 100
fmt.Println(n)
fmt.Printf("%T\n", n) // main.myInt
var m yourInt
m = 100
fmt.Println(m)
fmt.Printf("%T\n", m) // int
var c rune
c = '中'
fmt.Println(c)
fmt.Printf("%T\n", c) // int32
}
本文来自博客园,作者:寻月隐君,转载请注明原文链接:https://www.cnblogs.com/QiaoPengjun/p/16298452.html
分类:
Go
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话