Go语言入门经典 —— 函数 习题

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
}

猜你喜欢

转载自blog.csdn.net/fengqy1996/article/details/124216963