go slice(배열)에서 중복 제거하기

뭐하시는 분이세요?·2023년 8월 13일
0

자바스크립트에서 배열의 중복을 제거한다면 set을 사용하는 초간단한 방법이 있다.

const originalArray = [1, 2, 2, 3, 4, 4, 5];
const uniqueArray = [...new Set(originalArray)];

console.log(uniqueArray); // [1, 2, 3, 4, 5]

하지만 go에서 배열의 중복을 제거할때는..?

  • 대상 slice를 순회하며 처음 만나는 아이템은 key 라는 맵에 넣는다.
  • 이미 맵에 있는 값이면 패스한다.
  • map의 value로 struct{}{}를 사용하면 메모리를 사용하지 않아 메모리 절약 가능
key := make(map[string]struct{}, 0)
result := make([]string, 0)

for _, s := range strings {
	if _, ok := key[val]; ok {
		continue 
	} else {
		keys[s] = struct{}{}
		result = append(result, s)
	}
}

result slice에는 strings에서 중복된 요소를 제거한 값만 남게된다.

profile
이것저것 개발하지만 프론트엔드 개발이 제일 좋아요 👩🏻‍💻

1개의 댓글

comment-user-thumbnail
2023년 8월 13일

큰 도움이 되었습니다, 감사합니다.

답글 달기