MST

星途 面试题库

面试题:Go语言中如何间接实现函数参数默认值

在Go语言中没有直接设置函数参数默认值的语法。请阐述一种间接实现函数参数默认值的方法,并编写代码示例说明。
21.6万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

在Go语言中可以通过函数重载和可变参数的方式间接实现函数参数默认值。

  1. 使用函数重载
    • 定义一个有默认参数值的函数,然后再定义一个没有默认参数的函数,在没有默认参数的函数中调用有默认参数的函数。
    package main
    
    import "fmt"
    
    // 有默认参数的函数
    func greetWithDefault(name string, greeting string) {
        if greeting == "" {
            greeting = "Hello"
        }
        fmt.Printf("%s, %s!\n", greeting, name)
    }
    
    // 没有默认参数的函数,调用有默认参数的函数
    func greet(name string) {
        greetWithDefault(name, "Hello")
    }
    
    func main() {
        greet("John")
        greetWithDefault("Jane", "Bonjour")
    }
    
  2. 使用可变参数
    • 利用可变参数的特性,在函数内部判断参数个数来设置默认值。
    package main
    
    import "fmt"
    
    func printInfo(args ...string) {
        var name, title string
        if len(args) >= 1 {
            name = args[0]
        } else {
            name = "Guest"
        }
        if len(args) >= 2 {
            title = args[1]
        } else {
            title = "Mr."
        }
        fmt.Printf("%s %s\n", title, name)
    }
    
    func main() {
        printInfo("Tom")
        printInfo("Jerry", "Dr.")
    }
    

上述两种方法都能间接实现Go语言中函数参数默认值的效果。通过函数重载,可以让使用者选择是否提供默认参数;通过可变参数,可以更灵活地处理不同个数的参数并设置默认值。