アルパカ三銃士

〜アルパカに酔いしれる獣たちへ捧げる〜

Go でかわいいコードを書きたいの♡

この記事は 12/3 の okinawago アドベントカレンダーの記事です。 サーモンを作った話をする予定でしたが全く進んでないので... かわいいコードを書いてみようと思います(´∀`艸)♡♡♡♡♡

かわいいの定義

「かわいい」にはいろいろ定義がありそうなのでここでは僕がかわいいと思ったことを可愛いということにしますね!!

Go 1.7.4 のシンタックス

Go 1.7.4 の構文の識別子 (identifier) は次のような条件になっています。

unicode.IsLetter(c) || c == '_' || unicode.IsDigit(c)

1.7.4 の識別子のソースコードです。

ちなみに、この記事を書いてる時点での開発中の最新版のソースコードと違いますが、どうやら最新版も同じ条件みたいです。

ここで unicode.IsLetter(r rune) bool がどのような文字をカバーしているのか気になります。そこで unicode.IsLetter(r rune) bool を使い true の時だけ出力するコードを書いてみましょう。

package main

import (
    "fmt"
    "unicode"
)

func main() {
    for i := 0; i < 0xffff; i++ {
        if unicode.IsLetter(rune(i)) {
            fmt.Printf("%c\n", i)
        }
    }
}

今回は 0x0000 から 0xffff までを範囲としています。 このコードを実行した結果をファイルに書き出して、less(1) などで閲覧するのも有りでしょう。

日本語を使ったコードを書いてみる

それでは日本語を使ったコードを書いてみましょう。

package main

import "fmt"

typeint

const (
    男 性 = iota
    女
)

typestruct {
    性別     性
    名前     string
    住んでる場所 string
}

func 生まれる(性別 性, 名前, 住んでる場所 string) *人 {
    return &人{
        性別:     性別,
        名前:     名前,
        住んでる場所: 住んでる場所,
    }
}

func main() {
    瀧 := 生まれる(男, "瀧", "東京")
    三葉 := 生まれる(女, "三葉", "糸守町")
    入れ替わり(瀧, 三葉)
    fmt.Println(瀧.君の名前は())
    fmt.Println(三葉.君の名前は())
}

func (相手の 人) 君の名前は() string {
    return 相手の.名前
}

func 入れ替わり(瀧, 三葉 *人) {
    これってもしかして, 私たち身体が := 入れ替わってるー(瀧, 三葉)
    *瀧, *三葉 = *これってもしかして, *私たち身体が
}

func 入れ替わってるー(瀧, 三葉 *人) (*人, *人) {
    return 三葉, 瀧
}

結果は

三葉
瀧

うん!入れ替わってますね!!

カゝ ゎ レヽ レヽ ] ─ ├″を書 、キ ま ι ょ ぅ ♡

それではかわいいコードを書いてみましょう。

package main

import "fmt"

func main() {
    ょιょιˊȎωȎˋノ("இдஇ")
    ㄘんㄘんぺㄋぺㄋ("。╹ω╹。")
}

func ょιょιˊȎωȎˋノ(இдஇ string) {
    fmt.Printf("ょιょιˊʘωʘˋノ(%s;)\n", இдஇ)
}

func ㄘんㄘんぺㄋぺㄋ(カゝぉ string) {
    fmt.Printf("ㄘんㄘんぺㄋぺㄋ(%s)\n", カゝぉ)
}

結果は

ょιょιˊʘωʘˋノ(இдஇ;)
ㄘんㄘんぺㄋぺㄋ(。╹ω╹。)

かわいい!!!!!