1. 在Go语言中,函数可返回多少个值?
答:可以返回无限的值,多个返回值类型可以不同。
package main
import "fmt"
func main() {
i, j := test()
fmt.Println(i, j)
fmt.Println(test())
}
func test() (string, int) {
i := "Hello"
j := 5
return i, j
}
2. 调用自己的函数被称为什么?
答:递归函数
package main
import "fmt"
func main() {
test(1, 0)
}
func test(portion int, eaten int) int {
eaten += portion
if eaten >= 5 {
fmt.Printf("I'm full! I've eaten %d fishes!\n", eaten)
return eaten
}
fmt.Printf("I'm still hungry! I've eaten %d fishes!\n", eaten)
return test(portion, eaten)
}
3. 在Go语言中,可将函数作为参数传递给其他函数吗?
答:可以!函数本身可以作为数据类型。
package main
import (
"fmt"
)
func main() {
fn := func() string {
return "Function Called"
}
fmt.Println(test(fn))
}
func test(f func() string) string {
return f()
}
4. 设计一个将华氏温度转换为摄氏温度的函数。这个函数的输入和输出分别是什么?
//华氏温度 :摄氏温度 = 1 :17.22
package main
import "fmt"
func main() {
var c float64
fmt.Println("请输入华氏温度:")
fmt.Scanf("%f", &c)
fmt.Printf("华氏温度 %f 转化为 摄氏温度 %f\n", c, ftoc(c))
}
func ftoc(f float64) float64 {
ret := f * 17.22
return ret
}
5. 编写一个函数,它调用自己10次再退出。
// 递归调用10次
package main
import "fmt"
func main() {
s := recursion(1, 0)
fmt.Println(s)
}
func recursion(t int, ret int) int {
ret += t
if ret >= 10 {
return ret
}
return recursion(t, ret)
}
6.编写一个函数,它接受2个参数并返回3个值
// 函数接受2个参数,返回3个值
package main
import "fmt"
func main() {
fmt.Println(test(1, 2))
}
func test(i int, j int) (int, int, int) {
return 1, 2, 3
}