golang
interface のシグネチャを満たすことでポリモーフィズムを実現するStructual Typingを採用している
なぜGoはDuck typingを採用していると言えるのか、データ構造から詳しく解説してみた - Qiita
始め方は How to Write Go Code (with GOPATH) - The Go Programming Language を見るといい
ワークスペースとして GOPATH を指定して、GitHub の場合だと github.com/[user] がベースパスになる
slice と array の違い
https://go.dev/blog/slices-intro
array は実体、slice はポインタ・長さ・容量を持っている
なのでslice自体のコピーコストは小さく、ポインタで引き渡すメリットは薄いと考えられる
https://github.com/samber/lo がスライスのまま扱うインターフェイスなのでなぜ?と考えていた
array から [:] とすることで slice を作れる
slice の更新
index, value := range arr の value は要素のコピー
更新するときは arr[index] = [new value] とする