awesome-patterns/phrasebook/ch04/generic_data_structure/main.go

37 lines
456 B
Go
Raw Normal View History

2018-04-14 15:05:00 +03:00
package main
import "fmt"
type stackEntry struct {
next *stackEntry
value interface{}
}
type stack struct {
top *stackEntry
}
func (s *stack) Push(v interface{}) {
var e stackEntry
e.value = v
e.next = s.top
s.top = &e
}
func (s *stack) Pop() interface{} {
if s.top == nil {
return nil
}
v := s.top.value
s.top = s.top.next
return v
}
func main() {
s := &stack{}
s.Push("one")
s.Push("two")
s.Push("three")
fmt.Printf("%#v", s)
}