Какъв е методът Go за извличане на последния елемент от среза?
var slice []int
slice = append(slice, 2)
slice = append(slice, 7)
slice[len(slice)-1:][0] // Retrieves the last element
Решението по-горе работи, но изглежда неудобно.
Какъв е методът Go за извличане на последния елемент от среза?
var slice []int
slice = append(slice, 2)
slice = append(slice, 7)
slice[len(slice)-1:][0] // Retrieves the last element
Решението по-горе работи, но изглежда неудобно.
Само за четене на последния елемент от срез:
sl[len(sl)-1]
За да го премахнете:
sl = sl[:len(sl)-1]
Вижте тази страница за трикове с парчета
-1
, който Python има...
- person Morgan Wilde; 20.03.2014
-1
от Python, въпреки че често води до трудни за отстраняване на грешки грешки.
- person weberc2; 20.03.2014
panic: runtime error: index out of range
за profiles[len(profiles)-1].UserId
, предполагам, че дължината на среза е 0, така че се паникьосва?
- person tom10271; 16.08.2019
Още по-неудобното е, че програмата ви се срива на празни парчета!
За да се борите с празни сегменти -- нулева дължина, причиняваща panic: runtime error
, можете да имате последователност if/then/else или можете да използвате временен сегмент, за да решите проблема.
package main
import (
"fmt"
)
func main() {
// test when slice is not empty
itemsTest1 := []string{"apple", "grape", "orange", "peach", "mango"}
tmpitems := append([]string{"none"},itemsTest1...)
lastitem := tmpitems[len(tmpitems)-1]
fmt.Printf("lastitem: %v\n", lastitem)
// test when slice is empty
itemsTest2 := []string{}
tmpitems = append([]string{"none"},itemsTest2...) // <--- put a "default" first
lastitem = tmpitems[len(tmpitems)-1]
fmt.Printf("lastitem: %v\n", lastitem)
}
което ще ви даде този резултат:
lastitem: mango
lastitem: none
За []int
срезове може да искате -1
или 0
за стойност по подразбиране.
Мислейки на по-високо ниво, ако вашият срез винаги носи стойност по подразбиране, тогава tmp срезът може да бъде премахнат.
Малко по-малко елегантен, но може също така:
sl[len(sl)-1: len(sl)]
sl[len(sl)-1:]
, но връща срез, съдържащ последния елемент, а не само последния елемент. play.golang.org/p/kcThrqa-64c
- person Victor; 31.01.2018