3 ms·
> Python supports slice[-1] for the last element... Pretty reasonable. Lots of languages offer something akin to that. If not `[-1]` then something more OO lik
by laumars 8y ago
> Python supports slice[-1] for the last element... Pretty reasonable.
Lots of languages offer something akin to that. If not `[-1]` then something more OO like `.last`. Even the language I wrote supports it. This is why I made the complaint about Go.
> Also slice[0:-1] etc.
In fairness, Go can do that. You just omit the value for where you want the last (or first) element of the slice or array. eg
b := []byte("Hello, World")
world := b[7:]
(this would work with strings too but I'm using a byte to make it clear we're working with slices)
edit: just for clarity I mean Go has the syntactic sugar for stating the start or end of a slice - rather than a negative number of elements from the end of the slice. My point being that there is already some syntactic sugar in specifying slices so it's a shame Go doesn't take that further.
- 314 8y agoIn python slice[0:-1] drops the last element. To get the same effect in Go you need world := b[:len(b)-1]. The len() needs to be there (your example is a different case).
- laumars 8y agoYes, I was the one who made the comment about Go's lack of a -1 for slices in the first place. ;) I was actually referencing the 0 part and thus saying Go does already have some syntactic sugar when dealing with slices. ie you can do: slice[5:] // slice[:len(slice)] but not slice[5:-1] // slice[:len(slice)-1] Which is a great pity. However I'll update my previous comment to make that clearer because I can totally understand how it reads confusingly.