golang 始めたてメモ

この記事は, 旧ブログから移植された記事です. よって, その内容として, 旧ブログに依存した文脈が含まれている可能性があります. 予めご了承下さい.

大学の授業で AWS の API を触る機会があり, その際に golang を使うようなので (API 一覧には, C++ 版もあるようなので, 個人的には C++ が良かった), 特に意義のないコードを取り敢えずいくつか書いてみている. ある程度文法がわかったら, まずはともかくクイックソートを書いてみたわけだが…

初めはappendとスライスを乱用すれば, 関数型言語っぽく再帰が書けてスッキリするので, reverse

func reverse(ar []int) []int {
    var rev func([]int, []int) []int
    rev = func(a, b []int) []int {
        if len(a) == 0 {
            return b
        }
        return rev(a[1:], append([]int{a[0]}, b...))
    }
    return rev(ar, make([]int, 0))
}

というように書いてみていたのだが, golang は現在のところ, TCO が効かない1ようなのでやめた.

そして一通り A Tour of Go の Exercise をやってみた.

最後の Web Crawler の問題には他と比べて時間がかかってしまったが, 比較的楽しみながらできたので良かったのではないだろうか.


  1. 参考: “proposal: Go 2: add become statement to support tail calls #22624” https://github.com/golang/go/issues/22624 2018 年 6 月 17 日アクセス. “The Go Programming Language - Release History” https://golang.org/doc/devel/release.html 2018 年 6 月 17 日アクセス.↩︎