list.go 753 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package core
  2. type List struct {
  3. data []interface{}
  4. }
  5. func (list *List) Reset() {
  6. list.data = make([]interface{}, 0, 100)
  7. }
  8. func (list *List) Add(value interface{}) {
  9. if list.data == nil {
  10. list.data = make([]interface{}, 0, 100)
  11. }
  12. if cap(list.data) < len(list.data)+1 {
  13. newSlice := make([]interface{}, len(list.data), cap(list.data)*2)
  14. copy(newSlice, list.data)
  15. list.data = newSlice
  16. }
  17. list.data = append(list.data, value)
  18. }
  19. func (list *List) Get(i int) interface{} {
  20. if i < len(list.data) {
  21. return list.data[i]
  22. } else {
  23. return nil
  24. }
  25. }
  26. func (list *List) Size() int {
  27. return len(list.data)
  28. }
  29. func (list *List) GetAsArray() []interface{} {
  30. if list.data == nil {
  31. list.data = make([]interface{}, 0, 100)
  32. }
  33. return list.data
  34. }