はじめに
この記事は,学校の帰りに思いついたものを勢いだけで実装したクソコードを載せているだけのネタ記事です.
間違ってもこれを見てGoの勉強をしようなどと思わないでください.
若干 「Javaで湯婆婆を実装してみる」にインスパイアされている部分があります.
実装する
コード
package main
import (
"fmt"
)
type human struct {
Dolce bool
Gabbana bool
Kousui perfume
}
type perfume struct {
}
func (p *perfume) say() {
fmt.Println(`僕がフラれるんだ`)
}
func main() {
Kimi := human{true, true, perfume{}}
if Kimi.Dolce && Kimi.Gabbana {
Kimi.Kousui.say()
}
}
これが実際のコードです.fmtパッケージしか使っていないので,基本的な環境構築ができていればこのままコピペで動くはずです.
今回実装したのは,曲の中で最も有名であろう,「君のドルチェ&ガッバーナの その香水のせいだよ」の部分になります.実装するにあたって,歌詞を調べてみると他にも実装したら面白そうな部分があったので,暇なときにでも完全版を作りたいです(適当)
解説
構造体
type human struct {
Dolce bool
Gabbana bool
Kousui perfume
}
type perfume struct {
}
今回,使用した構造体は
- human
- perfume
の2つです.
human
は歌詞中の「君」を表現するために使用しました.
perfume
は名前の通り「香水」の部分です.この機能なら構造体にする必要もなかったのですが,次項で解説するメソッドを使用したかったため構造体にしています.
条件式
if Kimi.Dolce && Kimi.Gabbana {
Kimi.Kousui.say()
}
ここが一番実装したかった部分です.
perfume
を構造体にして,sayメソッドを追加しているので,「KimiのDolce && Gabbanaの そのKousuiのsayだよ」というように実装できます.
おまけ
このコードでは,Dolce と Gabbanaの値が一定のため,何度実行しても同じことの繰り返しでまたフラれてしまいます.
そこで,
package main
import (
"fmt"
"math/rand"
)
type human struct {
Dolce bool
Gabbana bool
Kousui perfume
}
type perfume struct {
}
func (p *perfume) say() {
fmt.Println(`僕がフラれるんだ`)
}
func main() {
Kimi := human{true, true, perfume{}}
if rand.Intn(2) == 0 {
Kimi.Dolce = false
}
if rand.Intn(2) == 0 {
Kimi.Gabbana = false
}
if Kimi.Dolce && Kimi.Gabbana {
Kimi.Kousui.say()
}
}
というようにrand.Intn(2)
を追加して25%の確率で香水のせいにするように変更してみました.
あとがき
こんな雑な記事をここまで読んでいただき,ありがとうございました.
今回はGoで香水(Go水)を実装しましたが,Pythonで書けばif Dolce and Gabbana
って書けるなーなどと思ったので,他の言語でも実装してみると面白いかもしれません.