Programming/Go

Go언어 맵(map) key value값있는지 확인하기

KayEsQuo 2021. 3. 2. 22:18

Go언어에서 특정값을 평균속도 O(1)의 성능을 나오는 자료구조 중 하나는 map이다.

map은 또한 파이썬의 딕셔너리와 비슷하게 작동한다는 점도 있다. 이러한 map은 딕셔너리와는 약간 다른점이 있는데,

그건 특정 key값과 value값을 확인할수 있는 내장함수지원 여부이다. 파이썬은 지원되지만 Go언어에서는 내장함수가 지원되지 않는다.

 

map의 key값과 value값의 존재유무를 알기에는 내장함수가 아닌 직접 확인해야하는 단점이 존재하지만 Go언어만의 문법을 살려 간단하게 key,value값의 존재유무를 알 수 있게 설명하겠다.

 

우선 map에 대한것은 알고있다는 가정하에 작성한다.

map에 대한 사용법(생성, 추가, 삭제)을 간단하게라도 보려면 아래에 링크를 참조하면 된다.

min94programming.tistory.com/16

 

 

package main

import "fmt"

func checkDuplication(Datamap map[string]string, s string) bool {

	if _, exists := Datamap[s]; exists {
		return true
	}
	return false
}

func main() {

	runeSet := map[string]string{}
	test := "가나다라"
	fmt.Println("첫번째 결과 : ", checkDuplication(runeSet, test)) // false

	runeSet["가나다라가"] = "abc"
	test1 := "가나다라가"
	fmt.Println("두번째 결과 : ", checkDuplication(runeSet, test1)) // true
}

map(key, value)결과

 

설명

    - checkDuplication함수는 두번째인자를 key값으로 입력 받고, key값의 존재여부는 true, false로 반환한다.

    - checkDuplication함수내부에 if 문내부의 exists변수는 bool값을 가진다. 그리고 '_'는 string이지만 무시한다.

    - exists가 true값을 가질 때 if문은 내부로 진입한다. 그렇지 않을경우는 false.

 

 

결론

    Go언어 map에 대한 특정값의 존재여부에 대해 알아보았고, map은 2개의 파라미터를 리턴한다는 사실도 파악하였다. 이점을 잘활용하면 내부검사 함수를 활용하기 용이할것으로 본다.