Map 초기화
Go 언어에서 Map은 make
함수를 사용하여 초기화할 수 있습니다. make
함수는 맵의 타입을 지정하고, 맵의 초기 크기를 지정할 수 있습니다. 만약 초기 크기를 지정하지 않으면, 기본적으로 맵은 0으로 초기화됩니다.
예를 들어, string
을 키로, int
를 값으로 가지는 맵을 초기화하려면 다음과 같이 작성합니다.
m := make(map[string]int)
make
함수로 초기화된 맵은 nil
이 아니기 때문에, 바로 사용할 수 있습니다.
m["one"] = 1
m["two"] = 2
Go 언어에서 Map은 make
함수를 사용하여 초기화할 수 있을 뿐만 아니라, 리터럴(literal)을 사용하여 초기화할 수도 있습니다. Map 리터럴은 중괄호({}) 안에 콤마(,)로 구분된 키-값 쌍(key-value pair)을 나열하여 생성합니다.
예를 들어, string
을 키로, int
를 값으로 가지는 맵을 리터럴로 초기화하려면 다음과 같이 작성합니다.
m := map[string]int{
"one": 1,
"two": 2,
}
위와 같은 방식으로 초기화된 맵은 make
함수로 초기화된 맵과 동일하게 동작합니다.
Map 활용
데이터 확인
Map에서 key
가 존재하는지 확인하려면, value, exists := m[key]
와 같은 방식으로 사용합니다. exists
는 key
가 존재하는지 여부를 나타내는 부울 값입니다.
value, exists := m["one"]
if exists {
fmt.Println(value) // 1
}
데이터 사용
Go 언어에서 Map은 key-value
쌍으로 데이터를 저장하는 자료구조입니다. Map에서 key
는 유일해야 하며, value
는 중복되어도 상관없습니다. Map에서 key
는 []
연산자를 사용하여 접근할 수 있습니다.
예를 들어, 위에서 초기화한 맵을 다음과 같이 접근할 수 있습니다.
fmt.Println(m["one"]) // 1
fmt.Println(m["two"]) // 2
key
에 해당하는 value
가 존재하지 않으면, 새로운 key-value
쌍을 추가합니다.
m := make(map[string]int)
m["one"] = 1
m["two"] = 2
m["three"] = 3 // "three": 3을 추가
위와 같은 방식으로 Map에서 key
에 해당하는 value
를 갱신하거나 추가할 수 있습니다.
데이터 갱신
Map에서 key
에 해당하는 value
를 갱신하는 방법은 아래와 같이 key
에 해당하는 value
에 새로운 값을 할당하는 것입니다.
m := make(map[string]int)
m["one"] = 1
m["two"] = 2
m["one"] = 3 // "one"에 해당하는 value를 3으로 갱신
데이터 삭제
Map에서 delete
함수를 사용하여 key
를 삭제할 수 있습니다.
delete(m, "one")
예제
다음은 Map을 사용하여 상품의 이름과 가격을 저장하고, 최소 가격과 최대 가격을 출력하는 예제입니다.
package main
import (
"fmt"
"math"
)
func main() {
products := map[string]int{
"apple": 1_500,
"banana": 2_000,
"orange": 1_000,
"grape": 3_000,
}
minPrice := math.MaxInt64
maxPrice := 0
for _, price := range products {
if price < minPrice {
minPrice = price
}
if price > maxPrice {
maxPrice = price
}
}
fmt.Printf("Min price: %d\n", minPrice)
fmt.Printf("Max price: %d\n", maxPrice)
}
위 예제에서는 products
맵을 사용하여 상품의 이름과 가격을 저장합니다. 초기 데이터는 Map 리터럴을 사용하여 초기화하였습니다. 그리고 minPrice
와 maxPrice
변수를 사용하여 가격의 최소값과 최대값을 계산합니다.
현재 가격이 minPrice
보다 작으면 minPrice
값을 현재 가격으로 갱신하고, 현재 가격이 maxPrice
보다 크면 maxPrice
값을 현재 가격으로 갱신합니다.
마지막으로, fmt.Printf
함수를 사용하여 최소 가격과 최대 가격을 출력합니다.