Go 언어 collection 함수 알아보기
오늘은 Go 언어에서의 콜렉션 함수 구현하는 것을 간단한 코드로 알아보려 합니다.
package main
import (
"fmt"
"strings"
)
문자열을 조작하기 위한 패키지인 strings과 문자열을 출력하기 위한 패키지인 fmt를 가져옵니다.
고 언어에서 제네릭을 지원하지 않기에 필요한 경우에는 콜렉션 함수를 제공합니다.
func indexFunc(str []string, t string) int {
for i, j := range str {
if j == t {
return i
}
}
return -1
}
문자열을 문자열 배열에서 찾아서 해당 문자열과 같은 위치의 인덱스 값을 반환합니다.
for range로 탐색해여 찾을 문자열과 같다면 해당 인덱스를 반환하고, 아니면 -1을 반환하게 됩니다.
func includeFunc(str []string, t string) bool {
return indexFunc(str, t) >= 0
}
문자열이 존재하는 지에 따라 bool 값이 반환됩니다.
구현한 index 함수를 이용하여 -1가 아니면 참을 반환하게 합니다.
func anyFunc(str []string, f func(string) bool) bool {
for _, j := range str {
if f(j) {
return true
}
}
return false
}
여러 문자열 중에 하나라도 인자로 받는 함수의 조건에 부합한다면, 참을 반환하고 아니면 거짓을 반환합니다.
func allFunc(str []string, f func(string) bool) bool {
for _, j := range str {
if !f(j) {
return false
}
}
return true
}
여러 문자열 모두가 인자로 받는 함수의 조건에 부합한다면, 참을 반환하고 아니면 거짓을 반환합니다.
func filterFunc(str []string, f func(string) bool) []string {
newArr := []string{}
for _, j := range str {
if f(j) {
newArr = append(newArr, j)
}
}
return newArr
}
인자로 받는 함수를 거쳐서 부합하는 문자열만 새롭게 []string를 구성하여 반환합니다.
func mapFunc(str []string, f func(string) string) []string {
newArr := make([]string, len(str))
for i, j := range str {
newArr[i] = f(j)
}
return newArr
}
인자로 받는 함수를 거쳐서 새롭게 []string를 구성하여 반환합니다.
Written on November 19, 2018