開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
入門Goプログラミング (Nathan Youngman(著)、Roger Peppé(著)、吉川 邦夫(監修, 翻訳)、翔泳社)のUNIT 3(関数とメソッド)、LESSON 14(ファーストクラス関数)の練習問題の解答を求めてみる。
コード
package main
import (
"fmt"
"math/rand"
)
type kelvin float64
type sensor func() kelvin
func realSensor() kelvin {
return 0
}
func fakeSensor() kelvin {
return kelvin(rand.Intn(151) + 150)
}
func calibrate(s sensor, offset kelvin) sensor {
return func() kelvin {
return s() + offset
}
}
func main() {
fmt.Println("realSensor")
offset := kelvin(5)
sensor := calibrate(realSensor, offset)
fmt.Println(sensor())
fmt.Println("fakeSensor")
sensor = calibrate(fakeSensor, offset)
for i := 0; i < 10; i++ {
fmt.Println(sensor())
}
}
入出力結果(Zsh、PowerShell、Terminal)
% go run calibrate.go
realSensor
5
fakeSensor
161
211
198
305
250
200
157
168
286
163
%
0 コメント:
コメントを投稿