3 ms·
I also find Go pragmatic but lacking abstraction power. The other day I needed a stack, and the best solution I could find was this: https://groups.google.com/
by swah 12y ago
I also find Go pragmatic but lacking abstraction power. The other day I needed a stack, and the best solution I could find was this:
https://groups.google.com/d/msg/golang-nuts/iwlzqNa4h3g/xCy3G2V-xwkJ https://groups.google.com/d/msg/golang-nuts/iwlzqNa4h3g/xCy3...
to be honest, if i need a stack, i usually implement it for the type
in question, or inline, as it's only a very small number of lines:
type stack []T
func (s *stack) push(t T) {
*s = append(*s, t)
}
func (s *stack) pop() T {
n := len(*s)
t := (*s)[n-1]
*s = (*s)[:n-1]
return t
}
And that's what I'm using...
- NateDad 12y agoIt's 10 lines of very obvious code. Isn't that a good thing? Do you really need stack.New<T>()?
- swah 12y agoYes, I do think so. Then I could keep thinking about the "business problem" instead of googling for half an hour because I can't believe there is no one reuses a stack in Go. Also, it could be something much more complicated than a stack, like the data structures in the STL... but that point has already been made elsewhere.