開発環境
- macOS High Sierra - Apple (OS)
- Emacs (Text Editor)
- Go (プログラミング言語)
- Introducing Go: Build Reliable, Scalable Programs Caleb Doxsey (著) (参考書籍)
Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の5章(構造体、共用体、ビットフィールド - 独自の構造を使う)、金庫破り(p. 243)をGoで取り組んでみる。
金庫破り(p. 243)
コード(Emacs)
package main
import "fmt"
const (
lemon int = iota
lime
)
type lemonLime struct {
which int
lemon float64
limePieces int
}
type margarita struct {
tequila float64
cointreau float64
lemonLime
}
func (m margarita) p() {
fmt.Printf("%2.1f単位のテキーラ\n%2.1f単位のコアントロー\n", m.tequila, m.cointreau)
switch m.which {
case lemon:
fmt.Printf("%2.1f単位のジュース\n", m.lemon)
case lime:
fmt.Printf("%d切れのライム\n", m.limePieces)
}
}
func main() {
var m1 margarita
m1 = margarita{2.0, 1.0, lemonLime{lemon, 0.5, 0}}
m1.p()
fmt.Println()
m2 := margarita{2.0, 1.0, lemonLime{lemon, 0.5, 0}}
m2.p()
fmt.Println()
var m3 margarita
m3.tequila = 2.0
m3.cointreau = 1.0
m3.which = lemon
m3.lemon = 0.5
m3.p()
fmt.Println()
var m4 margarita = margarita{2.0, 1.0, lemonLime{lemon, 0.5, 0}}
m4.p()
}
入出力結果(Terminal)
$ go run sample7.go 2.0単位のテキーラ 1.0単位のコアントロー 0.5単位のジュース 2.0単位のテキーラ 1.0単位のコアントロー 0.5単位のジュース 2.0単位のテキーラ 1.0単位のコアントロー 0.5単位のジュース 2.0単位のテキーラ 1.0単位のコアントロー 0.5単位のジュース $
0 コメント:
コメントを投稿