スライスの最後の要素を取得する方法は?


166

スライスの最後の要素を抽出するためのGoの方法は何ですか?

var slice []int

slice = append(slice, 2)
slice = append(slice, 7)

slice[len(slice)-1:][0] // Retrieves the last element

上記の解決策は機能しますが、扱いにくいようです。

回答:


296

スライスの最後の要素を読み取るだけの場合:

sl[len(sl)-1]

それを削除するには:

sl = sl[:len(sl)-1]

スライストリックについてはこちらのページをご覧ください


34
本当にありがとう!馬鹿げているように見えるかもしれませんが、-1Pythonが持っているインデックスを追加していません...
Morgan Wilde 14年

3
-1Pythonのが好きですが、デバッグが難しいエラーが発生することがよくあります。
weberc2

11
彼らはそれを意識的に外に置きました。それは自明ではなく、エラーが発生しやすかった。全体的に行くと「意味が多すぎる」というのは慎重です。また、メソッド/演算子のオーバーロード、関数のパラメーターのデフォルト値など、IMHOが同様の哲学的脈絡を備えていないことも特徴です。:この議論などを参照してくださいgroups.google.com/forum/#!topic/golang-nuts/yn9Q6HhgWi0
トニカルデナス

2
確かではありませんが、を取得しpanic: runtime error: index out of rangeましprofiles[len(profiles)-1].UserIdた。スライスの長さが0であるため、パニックになりますか?
tom10271

@ tom10271はい、そのような要素がない場合、スライスの最後の要素を取得できません。要素がない場合。
ToniCárdenas19年

-10

少しエレガントではありませんが、次のこともできます。

sl[len(sl)-1: len(sl)]

3
これはと同じですが、最後の要素だけでなく、最後の要素を含むスライスsl[len(sl)-1:]返します。play.golang.org/p/kcThrqa-64c
ビクター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.