Golang 슬라이스 처리 Koazee 라이브러리 알아보기 2

오늘도 Golang으로 따로 함수를 만들지 않고 Stream 처럼 작업하는 Koazee 라이브러리를 알아보려 합니다.

Koazee 설치

우선 Golang의 환경을 구성하기 위해 https://golang.org/dl/ 에서 윈도우, 리눅스, 맥에서 설치 프로그램을 내려받을 수 있습니다.

맥에서 brew로 쉽게 설치할 수 있습니다.

brew install go

우분투에서도 apt로 쉽게 설치할 수 있습니다.

sudo apt-get install golang-go

맥에서 Golang의 버전을 올리려면 brew를 이용합니다.

brew upgrade go

우분투에서도 Golang의 버전을 올리려면 backports 저장소를 등록하고 apt를 이용합니다.

sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt-get update
sudo apt-get install golang-go

go get으로 Koazee 패키지를 설치합니다.

go get github.com/wesovilabs/koazee

홈의 go 폴더에 Koazee 소스코드와 패키지 파일이 생성됩니다.

예제

package main

해당 소스코드를 실행 파일로 인식하게 해주도록 main이라고 선언합니다.

import (
	"fmt"

	"github.com/wesovilabs/koazee"
)

fmt 그리고 koazee를 가져옵니다.

func main() {
	intArray := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
	fmt.Println(intArray)

스트림처럼 만들어서 조작할 정수 슬라이스를 준비합니다.

	contains, _ := stream.Contains(1)
	fmt.Println(contains)

특정 수가 스트림에 있는 지 확인합니다.

	stream = koazee.StreamOf(intArray)
	fmt.Println(stream.Reverse().Out().Val())

스트림을 역순으로 다시 정렬합니다.

	stream = koazee.StreamOf(intArray)
	fmt.Println(stream.Take(1, 3).Out().Val())

두 인덱스의 사이에 있는 값들을 슬라이스로 출력합니다.

	fmt.Println(stream.
		Filter(
			func(val int) bool {
				return val > 3
			}).
		Out().Val(),
	)

특정 조건에 맞지 않는 수들을 스트림에서 삭제하고 출력합니다.

	fmt.Println(stream.RemoveDuplicates().Out().Val())

스트림에서 중복되는 수들을 삭제하고 출력합니다.

	stream = koazee.StreamOf(intArray)
	value, _ := stream.GroupBy(func(val int) int { return val * 10 })
	fmt.Println(value)

반환 조건대로 그룹을 묶어 map으로 변환하고 출력합니다.

	stream = koazee.StreamOf(intArray)
	fmt.Println(stream.Reduce(func(acc, val int) int {
		return acc + val
	}).Int())

값을 계산할 수 있습니다.

	stream = koazee.StreamOf(intArray)
	stream.ForEach(func(i int) {
		fmt.Println(i)
	}).Do()

	stream = koazee.
		StreamOf(intArray).
		Filter(func(i int) bool { return i > 3 }).
		ForEach(func(i int) {
			fmt.Println(i)
		})
	stream.Do()
}

Filter로 걸러진 정수 슬라이스의 스트림을 가지고 ForEach로 반복하여 이어 출력합니다.

Written on November 15, 2019