Cara Implementasi Queue (Antrian) Pada Golang
Pengertian Dasar
Queue atau sering kita tahu itu satu struktur data antrian dimana data yang kita masukkan akan diantrikan, dengan kata lain data yang pertama masuk akan keluar pertama juga. Biasanya kita sering tahu istrila FIFO (First In First Out).
Menurut informasi yang Santekno dapat, Queue atau antrian adalah suatu kumpulan data yang penambahan elemennya hanya bisa dilakukan pada suatu ujung (disebut di sisi belakang atau rear), dan menghapus atau mengambil elemen dilakukan lewat ujung yang lain (disebut dengan istilah sisi depan atau front).
Implementasi Queue
1package main
2
3type Queue struct {
4 items []int
5}
6
7func (q *Queue) Enqueue(i int) {
8 q.items = append(q.items, i)
9}
10
11func (q *Queue) Dequeue() int {
12 if len(q.items) == 0 {
13 return -1
14 }
15 item, items := q.items[0], q.items[1:]
16 q.items = items
17 return item
18}
19
20func main() {
21 q := Queue{}
22 q.Enqueue(1)
23 q.Enqueue(2)
24 q.Enqueue(3)
25
26 println(q.Dequeue())
27 println(q.Dequeue())
28 println(q.Dequeue())
29}Implementasi Queue menggunakan Channel
1package main
2
3type Queue struct {
4 items chan int
5}
6
7func (q *Queue) Enqueue(i int) {
8 q.items <- i
9}
10
11func (q *Queue) Dequeue() int {
12 return <-q.items
13}
14
15func main() {
16 q := Queue{
17 items: make(chan int, 16),
18 }
19 q.Enqueue(1)
20 q.Enqueue(2)
21 q.Enqueue(3)
22
23 println(q.Dequeue())
24 println(q.Dequeue())
25 println(q.Dequeue())
26}Penjelasan
Jika kamu sudah melihat bagaimana cara mengimplementasikan Queue tersebut, inti dari struktur data tersebut ada 2 operasi Enqueue yaitu memasukkan data ke dalam elemen sisi belakang (rear) dan Dequeue yaitu mengambil data di elemen sisi depan (front).