2018年9月26日水曜日

開発環境

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

コメントを投稿