Array

Run Settings
LanguageGo
Language Version
Run Command
package main import ( "fmt" "errors" ) type Array[T any] struct { length int data map[int]T } func (a Array[T]) Get(index int) (T, error) { val, exists := a.data[index] if (exists) { return val, nil } return val, errors.New("No value exists in the index position") } func (a *Array[T]) Push(val T) { (*a).data[(*a).length] = val (*a).length++ } func (a *Array[T]) Pop() T { poppedIndex := a.length - 1 poppedValue := a.data[poppedIndex] delete(a.data, poppedIndex) a.length-- return poppedValue } func (a *Array[T]) Shift(index int) { for i := index; i < a.length; i++ { a.data[i] = a.data[i+1] } delete(a.data, a.length) } func (a *Array[T]) Delete(index int) error { if (index >= a.length) { return errors.New("No item in the index!") } delete(a.data, index) a.length-- a.Shift(index) return nil } func NewArray[T any]() Array[T] { return Array[T]{length: 0, data: make(map[int]T)} } func main() { newArray := NewArray[int]() fmt.Println(newArray.Get(0)) newArray.Push(1) newArray.Push(2) // fmt.Println(newArray.Pop()) // fmt.Println(newArray.data) // fmt.Println("Length: ", newArray.length) // newArray.Push(2) fmt.Println(newArray.data) fmt.Println(newArray.Delete(2)) fmt.Println(newArray.Delete(0)) fmt.Println(newArray.data) fmt.Println(newArray.Delete(0)) fmt.Println(newArray.data) }
Editor Settings
Theme
Key bindings
Full width
Lines