面试题答案
一键面试在Go语言中可以通过函数重载和可变参数的方式间接实现函数参数默认值。
- 使用函数重载:
- 定义一个有默认参数值的函数,然后再定义一个没有默认参数的函数,在没有默认参数的函数中调用有默认参数的函数。
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") }
- 使用可变参数:
- 利用可变参数的特性,在函数内部判断参数个数来设置默认值。
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语言中函数参数默认值的效果。通过函数重载,可以让使用者选择是否提供默认参数;通过可变参数,可以更灵活地处理不同个数的参数并设置默认值。