[go] golang 제네릭을 통한 슬라이스 마지막 n 개 얻기

1.18 이후 추가된 golang 의 제네릭을 사용합니다

func Last[E any](s []E, _size int) ([]E, bool) {
	if len(s) == 0 {
		var zero []E
		return zero, false
	}
	min := 0
	end := len(s)

	if len(s) > _size {
		min = end - _size
	}
	ret := s[min:end]
	return ret, true
}

간단히 차트를 그리는 api 를 사용하는데 실시간 마지막 100개만 출력 하고 싶었다
변화가 있을 때마다 마지막 100개를 구하는 함수-를 제네릭으로 구현했다

다른 슬라이스 에서도 해당 _size 만큼의 뒷 slice 를 구할 수 있게 되었다

차트를 그리는데에는 아래 코드를 사용했다

Lastchart, ret := Last(timeList, 100)
if ret {
  chart := asciigraph.Plot(Lastchart)
  fmt.Printf("\x1b[2J")
  fmt.Printf("%s", chart)
}

clear 후 해당 차트를 표시한다 마지막 100개에 대해서

https://github.com/guptarohit/asciigraph

코드를 참고 해보면 된다

하지만 npm 의 그것에 비해 아직 구현이 많이 안되어 있어 썩….


댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다