# 1. Introduction

A Circular Linked List is a variation of the standard linked list in which the last node in the list points back to the first node, forming a complete loop. This structure provides a cyclic iteration capability where the list can be traversed endlessly in a loop.

# 2. Implementation Steps

1. Define a Node type with two fields: data (to store the actual value) and next (a pointer to the next node).

3. Implement methods to add elements at the end (Append), delete elements (DeleteWithValue), and display the list (Display).

# 3. Implementation in Golang

``````package main
import (
"fmt"
)
type Node struct {
data int
next *Node
}
}
func (list *CircularLinkedList) Append(data int) {
newNode := &Node{data: data}
return
}
temp = temp.next
}
temp.next = newNode
}
func (list *CircularLinkedList) DeleteWithValue(data int) {
return
}
curr = curr.next
}
} else {
}
return
}
for curr.next != list.head && curr.next.data != data {
curr = curr.next
}
if curr.next.data == data {
curr.next = curr.next.next
}
}
fmt.Println("List is empty")
return
}
for {
fmt.Print(temp.data, " -> ")
temp = temp.next
break
}
}
}
func main() {
list.Append(1)
list.Append(2)
list.Append(3)
list.Display()
list.DeleteWithValue(2)
list.Display()
}
``````

### Output:

```1 -> 2 -> 3 -> 1
1 -> 3 -> 1
```

### Explanation:

1. Node is the foundational element of the Circular Linked List, containing data and a next pointer to the succeeding node.