Go 언어 ring 컨테이너 대하여 배워보기

오늘은 Go 언어 컨테이너에 포함되있는 ring을 작성하면서 배워보려 합니다.

package main

import (
	"container/ring"
	"fmt"
)

container/ring 패키지를 import 해줍니다.

func main() {
    r := ring.New(3)

메인 함수에 ring을 생성해줍니다.

	for i := 0; i < r.Len(); i++ {
		r.Value = i
		r = r.Next()
    }

Len으로 크기를 반환받아 for문으로 반복합니다.

반복하면서 값을 대입하고, 다음 값에 접근하기 위해 Next를 사용합니다.

	r.Do(func(p interface{}) {
		fmt.Println(p.(int))
    })

각각의 원소에 실행할 익명함수를 등록하여 출력해줍니다.

	s := ring.New(3)
	for j := 0; j < s.Len(); j++ {
		s.Value = 4
		s = s.Next()
	}
	rs := r.Link(s)
	rs.Do(func(p interface{}) {
		fmt.Println(p.(int))
	})

Link로 두 ring들을 서로 연결할 수 있습니다.

	r = r.Move(3)
	r.Do(func(p interface{}) {
		fmt.Println(p.(int))
	})
}

Move로 ring을 회전시킬 수 있습니다.

Written on October 5, 2018