13.1. 프로그램언어 고(Go)에서의 맵 생성과 조작

프로그램언어 고(Go)의 맵 생성 방법

고(Go)언어의 맵 생성 방법을 설명드리겠습니다.

고(Go)언어에서 맵(map)은 키와 값의 쌍으로 이루어진 데이터 구조입니다. 맵을 생성하려면 make 함수를 사용하면 됩니다.

package main

import "fmt"

func main() {
  // string을 key로, int를 value로 갖는 맵 생성
  scores := make(map[string]int)
  
  // 데이터 추가
  scores["철수"] = 90
  scores["영희"] = 95
  
  // 데이터 읽기
  fmt.Println(scores["철수"])
  
  // 기본 출력  
  fmt.Println(scores)
}  

위의 코드에서 make 함수를 사용하여 string을 key로 하고 int를 value로 하는 맵 scores를 생성하였습니다.

그리고 key와 value로 각각 “철수”, 90 과 “영희”, 95 를 추가하였습니다.

맵의 데이터를 읽을 때는 scores[“철수”] 와 같이 대괄호 안 key를 지정하여 value에 접근할 수 있습니다.

맵 전체를 출력하면 key와 value가 순서없이 나열된 결과를 볼 수 있습니다.

맵을 생성할 때는 다음과 같은 형태를 사용합니다.

map[KeyType]ValueType

KeyType과 ValueType으로 사용할 수 있는 타입은 다음과 같습니다.

– 기본 타입 : bool, numeric, string
– aggregates 타입 : arrays, structs
– reference 타입 : pointers, channels, maps, functions

다만 KeyType은 == 와 != 연산자를 사용할 수 있는 타입이어야 합니다. 보통 string, integer, float 등을 주로 사용합니다.

맵의 기본 선언 시 크기를 지정하지 않기 때문에 make 함수를 사용하여 초기화하거나 리터럴로 초기화 가능합니다.

make 함수 사용 :

scores := make(map[string]int)

리터럴 사용 :

scores := map[string]int{"철수":90, "영희":95}

맵은 참조 타입이기 때문에 복사 시 서로 영향을 미칩니다.
따라서 값 복사를 원한다면 복사 함수를 사용합니다.

newScores := Copy(scores)

이상으로 고(Go)언어의 맵 생성 방법에 대해 간략히 설명해드렸습니다. 맵은 고(Go)언어에서 자주 사용되는 유용한 데이터 구조입니다.

프로그램언어 고(Go)의 맵 키 값 설정 방법

프로그램언어 고(Go)에서 맵(map)은 키와 값의 쌍으로 이루어진 데이터 구조입니다. 맵의 키는 보통 문자열이 사용되지만, 숫자나 구조체도 사용할 수 있습니다.

맵에 키와 값을 설정하는 방법은 다음과 같습니다.


package main

import "fmt"

func main() {

    // 맵 선언
    m := make(map[string]int)
    
    // 키와 값 설정
    m["apple"] = 5
    m["banana"] = 3
    
    // 출력
    fmt.Println(m)
}

위의 예제에서는 문자열을 키로 사용하고, 정수를 값으로 사용하는 맵을 선언합니다.
“apple”과 5, “banana”와 3이 각각 키와 값으로 설정됩니다.

맵에 새로운 키와 값을 설정할 때는 기존에 존재하지 않는 키를 사용해야 합니다.
같은 키로 값을 설정하면 기존 값이 새로운 값으로 대체됩니다.


package main

import "fmt"

func main() {

    m := make(map[string]int)
    
    m["apple"] = 5
    fmt.Println(m["apple"]) // 5
    
    m["apple"] = 10
    fmt.Println(m["apple"]) // 10
}  

위의 예제에서 “apple”이라는 키로 두 번 값을 설정했습니다.
두 번째 값 설정에서 기존 값 5가 10으로 대체되었습니다.

맵에서 키의 값을 조회할 때 해당 키가 존재하지 않으면 값의 기본값이 반환됩니다.
정수의 경우 0, 부울의 경우 false가 반환됩니다.


package main

import "fmt"

func main() {

    m := make(map[string]int)
    
    v := m["apple"]
    fmt.Println(v) // 0
}

위의 예제에서 존재하지 않는 키의 값을 조회했기 때문에 기본값 0이 반환됩니다.

이와 같이 고(Go)의 맵은 키와 값의 추가, 삭제, 조회 등을 유연하게 할 수 있는
유용한 데이터 구조입니다.

프로그램언어 고(Go)의 맵 값 수정 방법

고(Go)언어에서 맵 값을 수정하는 방법은 다음과 같습니다.

package main

import "fmt"

func main() {

    // 맵 선언
    m := map[string]int{"one": 1, "two": 2}

    // 맵 값 수정
    m["one"] = 11

    fmt.Println(m)
}

위의 코드에서 볼 수 있듯이, 맵 m은 string을 key로 하고 int를 value로 하는 맵입니다.

여기서 key가 “one”인 값을 수정하고 싶다면 m[“one”] = 11 과 같이 해당 key에 접근한 뒤 값을 재할당 하면 됩니다.

이렇게 하면 기존의 1값이 11로 수정됩니다.

맵에서 값을 수정할 때는 위 예제와 같이 수정하고자 하는 key로 접근한 뒤 값을 재할당하는 것이 포인트입니다.

수정 전의 값이 없으면 새로운 key-value 쌍이 맵에 추가됩니다.

프로그램언어 고(Go)의 맵에서 특정 키를 사용하여 값 가져오기

Go 언어의 map에서 특정 키를 이용하여 값을 가져오는 방법에 대해 약 1,600자 정도로 설명드리겠습니다.

Go 언어의 map은 키와 값의 쌍으로 이루어진 데이터 구조입니다. map 변수를 선언하고 make 함수를 사용하여 초기화할 수 있습니다. 그리고 대입 연산자(=)를 사용하여 키와 값을 추가할 수 있습니다.

package main

import "fmt"

func main() {
  // map 선언 및 초기화
  m := make(map[string]int)
  
  // items 추가
  m["apple"] = 5
  m["banana"] = 3
  
  // 키를 이용하여 값 가져오기
  v1 := m["apple"]
  fmt.Println(v1) // 5
  
  v2 := m["banana"] 
  fmt.Println(v2) // 3
}

위의 예제 코드에서 map m은 string 타입의 키와 int 타입의 값을 가집니다. “apple”과 5, “banana”과 3을 추가했습니다.

그리고 대괄호 구문을 사용하여 키인 “apple”로 값을 가져오면 5가, “banana”로 값을 가져오면 3이 반환됩니다.

map에 없는 키로 값을 가져오면 제로값이 반환되므로 주의가 필요합니다. 제로값이 문제되면 ok 변수를 사용하여 해당 키가 존재하는지 확인할 수 있습니다.

지금까지 Go언어 map에서 특정 키를 사용하여 값을 가져오는 방법에 대해 간략히 설명드렸습니다. 더 자세한 사항이 궁금하시다면 댓글로 질문 주시기 바랍니다.

프로그램언어 고(Go)의 맵에서 특정 키-값 쌍 제거 방법

package main

import "fmt"

func main() {
    m := map[string]int{"a": 1, "b": 2}

    // m 맵에서 "a"키에 해당하는 키-값 쌍을 제거
    delete(m, "a") 

    fmt.Println(m) // 맵에서 "a"키 제거된 결과 출력
}

고(Go)언어의 맵(map)에서 특정 키-값 쌍을 제거하는 방법은 내장 함수인 delete를 사용하는 것입니다.

delete 함수는 아래와 같이 사용합니다.

delete(map, key)

첫 번째 파라미터는 제거하고자 하는 키-값 쌍이 있는 맵을 지정합니다.

두 번째 파라미터는 제거하고자 하는 키를 지정합니다.

위 예제 코드에서 보다시피 m 맵에서 “a”라는 키를 갖는 원소를 제거하기 위해
delete(m, “a”)와 같이 호출했습니다.

delete를 호출하면 제거에 성공하면 값을 반환하지 않고, 제거에 실패하면 값을 반환합니다.

보통 반환값을 무시하고 호출하기 때문에 반환값 체크를 하지 않습니다.

제거 성공 여부 확인을 위해서는 len 함수로 맵의 크기를 비교하거나,
출력문을 통해 맵의 내용을 확인할 수 있습니다.

위 예제에서는 fmt.Println(m)으로 맵의 내용을 출력하여
“a”키가 제거된 것을 확인할 수 있습니다.

이와 같이 고(Go)언어의 맵에서 특정 키-값 쌍을 제거할 때는
내장 함수 delete를 사용하면 간단히 제거할 수 있습니다.

보다 자세한 사항은 공식 문서를 참고하시기 바랍니다.

Leave a Comment