golang 始めたてメモ
- 2018/06/17 19:45
-
大学の授業で AWS の API を触る機会があり, その際に golang を使うようなので (API 一覧には, C++ 版もあるようなので, 個人的には C++ が良かった), 特に意義のないコードを取り敢えずいくつか書いてみている. ある程度文法がわかったら, まずはともかくクイックソートを書いてみたわけだが…
初めはappend
とスライスを乱用すれば, 関数型言語っぽく再帰が書けてスッキリするので, reverse
を
func reverse(ar []int) []int {
var rev func([]int, []int) []int
= func(a, b []int) []int {
rev 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 の問題には他と比べて時間がかかってしまったが, 比較的楽しみながらできたので良かったのではないだろうか.
参考: “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 日アクセス.↩︎
活動継続のためのご支援を募集しています