MST

星途 面试题库

面试题:Go中多值返回在函数调用和赋值时的细节

在Go语言中,函数支持多值返回。请描述当一个函数返回多个值,在调用该函数并进行赋值操作时,有哪些需要注意的细节?比如如果接收变量的数量与返回值数量不一致会怎样?如何忽略某些返回值?
34.9万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 接收变量数量与返回值数量一致
    • 正常情况下,函数返回值数量和接收变量数量应完全匹配。例如:
    package main
    
    import "fmt"
    
    func addSub(a, b int) (int, int) {
        return a + b, a - b
    }
    
    func main() {
        sum, diff := addSub(5, 3)
        fmt.Printf("Sum: %d, Diff: %d\n", sum, diff)
    }
    
  2. 接收变量数量与返回值数量不一致
    • 接收变量数量小于返回值数量:这是不允许的,会导致编译错误。例如:
    package main
    
    func addSub(a, b int) (int, int) {
        return a + b, a - b
    }
    
    func main() {
        sum := addSub(5, 3) // 编译错误:too few values in assignment
    }
    
    • 接收变量数量大于返回值数量:同样不允许,会导致编译错误。例如:
    package main
    
    func addSub(a, b int) (int, int) {
        return a + b, a - b
    }
    
    func main() {
        sum, diff, extra := addSub(5, 3) // 编译错误:too many values to unpack
    }
    
  3. 忽略某些返回值
    • 可以使用下划线 _ 来忽略不需要的返回值。例如:
    package main
    
    import "fmt"
    
    func addSub(a, b int) (int, int) {
        return a + b, a - b
    }
    
    func main() {
        sum, _ := addSub(5, 3)
        fmt.Printf("Sum: %d\n", sum)
    }