Golang如何定义函数?Go function参数与返回值解析

来源:个人站长网作者:南京网站建设头衔:草根站长
导读:本期聚焦于小伙伴创作的《Golang如何定义函数?Go function参数与返回值解析》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Golang如何定义函数?Go function参数与返回值解析》有用,将其分享出去将是对创作者最好的鼓励。

在Go语言里,函数是组织代码的基本单元,无论是实现业务逻辑还是封装工具方法,都需要通过函数来完成。Go的函数定义语法简洁且有明确的规则,参数和返回值的设计也兼顾了实用性和可读性。

Golang如何定义函数?Go function参数与返回值解析

Go函数的基础定义语法

Go语言定义函数使用func关键字,基本结构如下:

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

函数名需要遵循Go的标识符命名规则,首字母大写表示该函数可以被其他包访问,首字母小写则仅在当前包内可见。参数列表中的每个参数都需要指定参数名和参数类型,多个参数之间用逗号分隔。

无参数无返回值的函数示例

package main

import "fmt"

// 无参数无返回值的函数
func printHello() {
    fmt.Println("Hello, Go function")
}

func main() {
    printHello()
}

Go函数参数解析

Go函数的参数传递只有值传递一种方式,传递的是参数的副本,修改函数内的参数不会影响原变量。如果参数是引用类型(如切片、map、指针),传递的是引用本身的副本,修改引用指向的内容会影响原变量。

普通参数传递

package main

import "fmt"

// 接收两个int类型参数的函数
func add(a int, b int) int {
    return a + b
}

func main() {
    x := 10
    y := 20
    result := add(x, y)
    fmt.Println(result) // 输出30
}

相同类型的相邻参数可以合并类型声明,上面的add函数也可以写成func add(a, b int) int的形式。

可变参数

Go支持可变参数,可变参数需要放在参数列表的最后一位,类型是[]类型

package main

import "fmt"

// 接收可变int参数的函数,sum为[]int类型
func sum(nums ...int) int {
    total := 0
    for _, v := range nums {
        total += v
    }
    return total
}

func main() {
    fmt.Println(sum(1, 2, 3))       // 输出6
    fmt.Println(sum(10, 20, 30, 40)) // 输出100
}

Go函数返回值解析

Go函数的返回值可以有多个,返回值列表需要指定每个返回值的类型,多个返回值类型用括号包裹。

多返回值

package main

import "fmt"

// 返回两个int值的函数,第一个是商,第二个是余数
func divide(a, b int) (int, int) {
    quotient := a / b
    remainder := a % b
    return quotient, remainder
}

func main() {
    q, r := divide(10, 3)
    fmt.Printf("商:%d,余数:%dn", q, r) // 输出商:3,余数:1
}

命名返回值

Go支持给返回值命名,命名返回值会被隐式初始化为零值,函数体中可以直接使用返回值名,最后用return即可返回,不需要显式写出返回值:

package main

import "fmt"

// 命名返回值,res和err是返回值名
func calc(a, b int) (res int, err error) {
    if b == 0 {
        err = fmt.Errorf("除数不能为0")
        return
    }
    res = a / b
    return
}

func main() {
    r, e := calc(10, 2)
    if e != nil {
        fmt.Println(e)
        return
    }
    fmt.Println(r) // 输出5
}

常见注意事项

  • 函数的返回值如果只有一个,且不是命名返回值,返回值列表的括号可以省略。
  • 调用多返回值的函数时,如果不需要某个返回值,可以用下划线_忽略。
  • 函数可以作为参数传递给其他函数,也可以作为返回值返回,这是Go函数式编程的基础特性。

函数作为参数示例

package main

import "fmt"

// 接收一个函数作为参数,该函数接收两个int返回int
func operate(a, b int, op func(int, int) int) int {
    return op(a, b)
}

func add(x, y int) int {
    return x + y
}

func main() {
    result := operate(5, 3, add)
    fmt.Println(result) // 输出8
}

GolangGo_function参数返回值函数定义修改时间:2026-07-04 20:18:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。