計算機科学のブログ

Go - responding to requests - Web Apps - First-class functions

Head First GoJay McGavren(著)、O’Reilly Media)の Chapter 15(responding to requests - Web Apps)、p.439(Pool Puzzle)の解答を求めてみる。

コード

main.go

package main

import "fmt"

func callFunction(passedFunction func()) {
	passedFunction()
}
func callTwice(passedFunction func()) {
	passedFunction()
	passedFunction()
}
func callWithArguments(passedFunction func(string, bool)) {
	passedFunction("This sentence is", false)
}
func printReturnValue(passedFunction func() string) {
	fmt.Println(passedFunction())
}
func functionA() {
	fmt.Println("function called")
}
func functionB() string {
	fmt.Println("function called")
	return "Returning from function"
}
func functionC(a string, b bool) {
	fmt.Println("function called")
	fmt.Println(a, b)
}
func main() {
	callFunction(functionA)
	callTwice(functionA)
	callWithArguments(functionC)
	printReturnValue(functionB)
}

入出力結果(Terminal, Zsh)

% go run ./main.go 
function called
function called
function called
function called
This sentence is false
function called
Returning from function
%