상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
구글 기프트카드 충전은 어떻게 하나요?
구글 기프트카드 구매 시 현금영수증 발급이 되나요?
구글 기프트카드 스크래치를 잘못 긁으면 어떻게 되나요?
사람은 왜 진실보다 듣기 좋은 말을 선택할까?
거짓말을 반복하면 성격이 변할까?
왜 어떤 사람은 필요 이상으로 꾸며 말할까?
왜 어떤 사람은 거짓말을 게임처럼 즐길까?
벽걸이 에어컨 청소 시 필터만 씻으면 되나요?
벽걸이 에어컨 청소 시 배수관도 해야 하나요?
벽걸이 에어컨 청소 후 곰팡이 예방 방법은?
대상포진 예방접종은 효과가 얼마나 지속되나요?
대상포진 예방접종은 이미 대상포진을 앓은 사람도 필요한가요?
Previous
Next
수정하기 - Go 언어에서 맵(map)을 사용하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Go 언어에서 맵(map)은 키-값 쌍을 저장하는 데이터 구조로, 해시 테이블을 기반으로 구현되어 있습니다. 맵은 매우 유용하며, 다양한 상황에서 데이터를 효율적으로 저장하고 검색하는 데 사용됩니다. 이 글에서는 Go 언어에서 맵을 사용하는 방법에 대해 자세히 설명하겠습니다. 1. 맵의 선언 및 초기화 Go에서 맵을 선언하는 방법은 다음과 같습니다: ```go var m map[string]int ``` 위의 코드는 문자열 키와 정수 값을 가지는 맵을 선언하지만, 초기화되지 않았기 때문에 nil 상태입니다. nil 맵에 값을 추가하려고 하면 런타임 오류가 발생합니다. 따라서 맵을 사용하기 전에 반드시 초기화해야 합니다. 맵을 초기화하는 방법은 `make` 함수를 사용하는 것입니다: ```go m = make(map[string]int) ``` 또는 선언과 동시에 초기화할 수도 있습니다: ```go m := make(map[string]int) ``` 또는 리터럴을 사용하여 초기화할 수도 있습니다: ```go m := map[string]int{ "apple": 5, "banana": 10, } ``` 2. 값 추가 및 수정 맵에 값을 추가하거나 수정하는 방법은 다음과 같습니다: ```go m["apple"] = 5 // "apple" 키에 5를 추가 m["banana"] = 10 // "banana" 키에 10을 추가 m["apple"] = 15 // "apple" 키의 값을 15로 수정 ``` 3. 값 조회 맵에서 값을 조회하는 방법은 다음과 같습니다: ```go value := m["apple"] // "apple" 키의 값을 가져옴 ``` 키가 존재하지 않을 경우, 기본값이 반환됩니다. 예를 들어, 위의 코드에서 "orange"라는 키가 존재하지 않는다면 `value`는 0이 됩니다. 또한, 두 번째 반환값을 사용하여 키의 존재 여부를 확인할 수 있습니다: ```go value, exists := m["orange"] if exists { fmt.Println("Value:", value) } else { fmt.Println("Key does not exist.") } ``` 4. 값 삭제 맵에서 값을 삭제하려면 `delete` 함수를 사용합니다: ```go delete(m, "apple") // "apple" 키와 그에 해당하는 값을 삭제 ``` 5. 맵의 길이 맵의 길이(즉, 저장된 키-값 쌍의 수)를 확인하려면 `len` 함수를 사용합니다: ```go length := len(m) // m의 길이를 가져옴 ``` 6. 맵의 반복 맵의 모든 키-값 쌍을 반복하려면 `for` 루프를 사용할 수 있습니다: ```go for key, value := range m { fmt.Println(key, value) } ``` 7. 맵의 특성 - 비순서성 : Go의 맵은 순서가 보장되지 않습니다. 따라서 반복할 때마다 순서가 달라질 수 있습니다. - 동시성 : Go의 맵은 기본적으로 동시 안전하지 않습니다. 여러 고루틴에서 동시에 맵에 접근하려면 `sync.Mutex` 또는 `sync.RWMutex`를 사용하여 동기화해야 합니다. - 키의 타입 : 맵의 키는 비교 가능한 타입이어야 합니다. 즉, <a href='https://sangseek.com/sangseeks/기본 타입/ko'>기본 타입</a>(문자열, 정수 등)이나 구조체(구조체의 모든 필드가 비교 가능해야 함) 등을 사용할 수 있습니다. 8. 예제 코드 아래는 Go 언어에서 맵을 사용하는 간단한 예제입니다: ```go package main import ( "fmt" ) func main() { // 맵 초기화 fruits := make(map[string]int) // 값 추가 fruits["apple"] = 5 fruits["banana"] = 10 // 값 수정 fruits["apple"] = 15 // 값 조회 if value, exists := fruits["banana"]; exists { fmt.Println("Banana count:", value) } else { fmt.Println("Banana not found.") } // 값 삭제 delete(fruits, "apple") // 맵의 길이 fmt.Println("Number of fruits:", len(fruits)) // 맵 반복 for fruit, count := range fruits { fmt.Println(fruit, count) } } ``` 이 예제에서는 맵을 초기화하고, 값을 추가 및 수정하고, 조회하고, 삭제하는 과정을 보여줍니다. Go 언어에서 맵은 매우 유용한 데이터 구조로, 다양한 상황에서 활용될 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기