In der Informatik ist der Stack eine wichtige Datenstruktur. Der Stapel kann die Datenzugriffsmethode „Last In First Out“ (Last In First Out) gut implementieren und wird daher häufig im Code verwendet.
Go-Sprache (Golang) ist aufgrund ihrer effizienten Speicherzuweisung und ihres Garbage-Collection-Mechanismus zur bevorzugten Sprache vieler Entwickler geworden. In diesem Artikel stellen wir vor, wie man mit Golang einen einfachen Stack implementiert.
In Golang können wir Slices verwenden, um Stapel zu implementieren. Ein Slice ist ein dynamisches Array, dessen Länge automatisch angepasst werden kann, wodurch es sich sehr gut für Stapeldatenstrukturen eignet.
Das Folgende ist eine einfache Stapelstruktur:
type Stack struct { data []int }
data
ist ein Slice, das einen Integer-Typ enthält. data
是一个保存整数类型的切片。
接下来,我们可以为该结构体添加三个方法:Push
、Pop
和Peek
。Push
方法用于向堆栈中添加元素,Pop
方法用于从堆栈中删除元素,Peek
Push
, Pop
und Peek
. Mit der Methode Push
werden Elemente zum Stapel hinzugefügt, mit der Methode Pop
werden Elemente aus dem Stapel entfernt und mit der Methode Peek
Wird verwendet, um das Element an die Spitze des Stapels zu bringen, ohne es zu löschen. Der Code zum Hinzufügen eines Elements lautet wie folgt:
func (s *Stack) Push(n int) { s.data = append(s.data, n) }
func (s *Stack) Pop() (int, bool) { if len(s.data) == 0 { return 0, false } lastIdx := len(s.data) - 1 last := s.data[lastIdx] s.data = s.data[:lastIdx] return last, true }
func (s *Stack) Peek() (int, bool) { if len(s.data) == 0 { return 0, false } lastIdx := len(s.data) - 1 last := s.data[lastIdx] return last, true }
stack := Stack{} stack.Push(1) stack.Push(2) stack.Push(3) val, ok := stack.Peek() if ok { fmt.Println(val) // 3 } val, ok = stack.Pop() if ok { fmt.Println(val) // 3 } val, ok = stack.Pop() if ok { fmt.Println(val) // 2 }
Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen einfachen Stack mit Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!