윤잡스
카테고리
작성일
2024. 12. 2. 16:25
작성자
네수
반응형

 

  _, ok 가 어떤 의미인지 알려면 `맵` 이라는 것을 이해해야 한다.

 

 

맵은

보통 배열이나 슬라이스로 할 수 없는 일이 있을 때 사용하는데...

 

 

맵 

배열과 슬라이스의 한계는 인덱스로 양의 정수만 사용할 수 있다는 것이다.

 

은 값들끼리 서로 비교가 가능한 데이터 타입들을 키로 활용할 수 있는 데이터 구조라고 생각하면 된다.

 

맵을 사용할 때 지켜야 할 경험적인 규칙으로는..

🔹양의 정수가 아닌 인덱스가 필요하거나 양의 정수여도 연속되지 않고 범위가 넓은 인덱스를 사용할때 사용해야한다.

가 있고

 

 

맵은 또한 다음과 같은 특징이 있다.

  1. 주어진 키로 검색과 데이터 접근을 할 수 있고 어떤 경우에는 키의 조합으로도 데이터에 접근 가능함
  2. 맵의 모든 원소에 선형 시간으로 접근가능. 원소를 추가하고 검색하는 것도 빠르고 맵의 크기에 따라 원소 추가와 검색 성능이 좌우되지 않음
  3. 이해하기 쉬우므로 설계가 명확함

 

 

그럼 어떻게 만드느냐???!🤔

 

make()맵 리터럴을 사용해 새로운 맵 변수를 생성할 수 있다.

 

➡️ 문자열 키와 정수 값을 갖는 새로운 맵 만든다면 make(map[string]int) 만 적은 다음 원하는 변수에 대입하면 된다.

➡️ 반면 맵 리터럴을 이용한다면 아래 코드 처럼 작성해야한다.

m := map[string]int {
	"key1": -3
    "key2": 123
 }

 

* 맵을 만들 때 데이터를 추가하고 싶다면 맵 리터럴을 사용하는 것이 좀 더 성능이 좋음

* 맵에서 원소들의 순서에는 어떠한 가정도 하면 안 됨. Go는 맵을 반복할 때 무작위 순서로 키를 반복하며, 언어에서 의도적으로 설계한 부분임

 

 

*맵의 길이 구하기

➡️ len() 함수

*맵의 특정 키와 값 쌍 지우기

➡️ delete(맵의 이름, 키의 이름) 함수

 

 

 


 

 

 

이제 여기 까지 왔다면 이 글의 제목을 이해할 수 있다.

 

 

v, ok  :=  aMap[k]

 

 

 

이 구문이 반환하는 두 번째 값을 이용하면 aMap이라는 맵에 k라는 키가 존재하는지 확인할 수 있다.

 

ok는 키가 맵에 존재하는지 여부를 나타내는 불리언 값

 

➡️ ok가 true라면 키k가 존재함. 

➡️ true가 아니라면 v라는 맵의 값에 해당하는 데이터 타입의 제로 값이 된다.

맵에 존재하지 않는 키의 값을 얻으려고 한다면 Go는 제로 값만 반환할 것이다.

 


✔️_, ok :=  요고는 go 채널이나 타입단언에서도 쓰인다.

✔️  ok 대신 다른 변수 써도 된다.

 

 

 

 

 

 

 

 

 


참고자료 : Go 마스터하기 (3/e)

반응형