はじめに
本記事は以下のツイートの翻訳転載です。
スライスを配列にパースする方法についての内容になります。
(記事タイトルは転載元Post(Parse an Array into a Slice
)より)
配列をスライスにパースする
copy()
を検討しますよね。
しかし、これは冗長です。
もしプロジェクトがGo 1.20にアップデートされていれば、より簡単にパースすることができます。
他の型のパース(例えばint
からint32
)と同様です。
古いバージョンを使用している場合は、Go 1.17でもワンライナーで解決できます。
個人的にはあまり使わないが、知っておくと確実に便利です。
おわりに
スライスを配列にパースしたいと思ったことが無いのですが、パフォーマンス面で有用なのでしょうか?
もしくは使用したい関数のシグネチャに合わせるため?
func main() {
s := []int{1, 2, 3, 4, 5}
// NG
// cannot use s (variable of type []int) as [3]int value in argument to SomeFunc
SomeFunc(s)
// OK
// arg0: 1, arg1: 2, arg2: 3
SomeFunc([3]int(s[0:3]))
}
func SomeFunc(arg [3]int) {
fmt.Printf("arg0: %v, arg1: %d, arg2: %d\n", arg[0], arg[1], arg[2])
}