2020年1月24日金曜日

開発環境

入門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 コメント:

コメントを投稿