2020年4月23日木曜日

開発環境

入門Goプログラミング (Nathan Youngman(著)、Roger Peppé(著)、吉川 邦夫(監修, 翻訳)、翔泳社)のUNIT 3(関数とメソッド)、LESSON 13(メソッド)の練習問題の解答を求めてみる。

コード

package main

import "fmt"

type celsius float64
type fahrenheit float64
type kelvin float64

func (c celsius) fahrenheit() fahrenheit {
 return fahrenheit(c*9/5 + 32)
}
func (c celsius) kelvin() kelvin {
 return kelvin(c + 273.15)
}
func (f fahrenheit) celsius() celsius {
 return celsius((f - 32) * 5 / 9)
}
func (f fahrenheit) kelvin() kelvin {
 return f.celsius().kelvin()
}
func (k kelvin) celsius() celsius {
 return celsius(k - 273.15)
}
func (k kelvin) fahrenheit() fahrenheit {
 return k.celsius().fahrenheit()
}

func main() {
 fmt.Printf("%v\t%v\t%s\n", "摂氏", "華氏", "ケルビン")
 format := "%.2f\t%.2f\t%.2f\n"
 c := celsius(0)
 fmt.Printf(format, c, c.fahrenheit(), c.kelvin())
 f := fahrenheit(0)
 fmt.Printf(format, f.celsius(), f, f.kelvin())
 k := kelvin(0)
 fmt.Printf(format, k.celsius(), k.fahrenheit(), k)
}

入出力結果(Zsh、PowerShell、Terminal)

% go run method.go
摂氏 華氏 ケルビン
0.00 32.00 273.15
-17.78 0.00 255.37
-273.15 -459.67 0.00
%

0 コメント:

コメントを投稿