Метод ring.Ring.Prev

Метод ring.Ring.Prev возвращает указатель на предыдущий элемент кольцевого списка. Он не изменяет текущую позицию в кольце, а только возвращает ссылку на соседний элемент. Если кольцо пустое или содержит один элемент, метод вернет указатель на тот же самый элемент.

Синтаксис

goring.Prev() *Ring

Пример

Давайте создадим кольцо из пяти элементов и перейдем к предыдущему элементу от текущего:

gopackage main

import (
  "container/ring"
  "fmt"
)

func main() {
  r := ring.New(5)
  for i := 0; i < r.Len(); i++ {
    r.Value = i
    r = r.Next()
  }

  current := r
  prev := current.Prev()
  fmt.Printf("Current: %v, Previous: %v\n", current.Value, prev.Value)
}

Результат выполнения кода:

go"Current: 0, Previous: 4"

Пример

Давайте пройдем по всем элементам кольца в обратном порядке, используя метод Prev:

gopackage main

import (
  "container/ring"
  "fmt"
)

func main() {
  r := ring.New(5)
  for i := 0; i < r.Len(); i++ {
    r.Value = i
    r = r.Next()
  }

  start := r
  for i := 0; i < r.Len(); i++ {
    fmt.Printf("%d ", r.Value)
    r = r.Prev()
  }
  fmt.Println()
}

Результат выполнения кода:

go"0 4 3 2 1 "

Пример

Давайте покажем, что метод Prev не изменяет текущий элемент, а только возвращает ссылку на предыдущий:

gopackage main

import (
  "container/ring"
  "fmt"
)

func main() {
  r := ring.New(3)
  for i := 0; i < r.Len(); i++ {
    r.Value = i
    r = r.Next()
  }

  current := r
  prev := current.Prev()
  fmt.Printf("Before - Current: %v, Previous: %v\n", current.Value, prev.Value)

  prev.Value = 99
  fmt.Printf("After - Current: %v, Previous: %v\n", current.Value, prev.Value)
}

Результат выполнения кода:

go"Before - Current: 0, Previous: 2"
"After - Current: 0, Previous: 99"

Смотрите также

  • метод ring.Ring.Next,
    который возвращает следующий элемент кольцевого списка
  • метод ring.Ring.Move,
    который перемещается на указанное количество элементов
  • метод ring.Ring.Link,
    который связывает два кольца в одно
  • метод ring.Ring.Len,
    который возвращает количество элементов в кольце