Go 函数和方法

函数式编程的语言中,函数是一等公民(不是对象Object或Class),Go语言中也不例外.

函数:

函数声明:

func 函数名(参数列表) 返回值类型列表 { 函数体 }

函数声明包含一个函数名,参数列表, 返回值列表和函数体。如果函数没有返回值,则返回列表可以省略。函数从第一条语句开始执行,直到执行return语句或者执行函数的最后一条语句。

函数可以没有参数或接受多个参数。

// 加法
func Sum(num1 int, num2 int) int{
  return num1 + num2
}

// 减法,多返回值必须用()括起来
func Subtraction(num1 int, num2 int) (int, error){
  return num1 + num2,nil
}

函数也可以作为参数传递,复杂的函数签名(参数,返回值)建议定义为函数类型,提高代码可阅读性

// 定义一个函数类型。
type FormatFunc func(x, y int) string 

// 定义一个函数,第一个参数是 FormatFunc 类型
func format(fn FormatFunc, x, y int) string {
    return fn(x, y)
}

func main() {
    // 调用format函数;第一个参数传入匿名函数,匿名函数签名和 FormatFunc 一致
    s2 := format(func(x, y int) string {
        return fmt.Sprintf(s, x, y)
    }, 10, 20)

    println(s1, s2)
}

方法:

方法声明:

func (recevier type) 方法名(参数列表) 返回值类型列表 { 方法体 }

与函数声明类似;不同的是方法名前面多了一个接收者,意思该方法只能由type类型的实例或者指针调用

posted @   学了个江  阅读(44)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示