Golang_정리하기_3

[Go tutorial] Go 정리하기 - 3

Go-tour 참조

구름edu 참조

  • 맵(map)

    • 키와 value의 조합을 나타내기 위한것으로 파이썬의 딕셔너리를 생각하자.

    • var 맵이름 map[key자료형]value자료형 으로 선언

      • var a map[int]string :: key가 int이고 value가 string인 맵 a
    • 선언만 하고 초기화하지 않는다면 Nil map 이다.

    • 데이터 추가 or 갱신 :: 맵이름[key] = value 를 이용

    • 데이터 삭제 :: delete(맵이름,key) 를 이용

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      func main() {
      //지역번호와 지역 저장
      var m = make(map[string]string)

      m["02"] = "서울특별시"
      m["031"] = "경기도"
      m["032"] = "충청남도"
      m["053"] = "대구광역시"

      fmt.Println(m)

      //동일한 key값으로 value값을 저장하면 갱신이 된다
      m["032"] = "인천"

      fmt.Println(m)

      //m에 있는 "031"key의 value와 함께 삭제
      delete(m, "031")

      fmt.Println(m)
      }
    • key체크, value 확인

      • “맵이름[key]” 는 value와 키가 존재하는지 여부를 반환한다.

      • 존재하지 않는 키값이라면 자료형에따라 0 혹은 “” 를 반환

      • 해당 키가 존재하는지 여부에 따라 true/false 반환

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        func main() {
        m := make(map[string]int)

        m["Answer"] = 42
        fmt.Println("The value:", m["Answer"])
        ## print : The value: 42
        m["Answer"] = 48
        fmt.Println("The value:", m["Answer"])
        ## print : The value: 48
        delete(m, "Answer")
        fmt.Println("The value:", m["Answer"])
        ## print : The value: 0
        v, ok := m["Answer"]
        fmt.Println("The value:", v, "Present?", ok)
        ## print : The value: 0 Present? false
        }
  • 연습 : 맵 - 문제

  • 함수 클로져

    • 클로져는 함수 안에서 익명 함수를 정의해 바깥쪽 함수에서 선언한 변수에도 접근할 수 있는 함수를 뜻한다.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      func adder() func(int) int {
      sum := 0
      return func(x int) int {
      sum += x
      return sum
      }
      }

      func main() {
      pos, neg := adder(), adder()
      for i := 0; i < 10; i++ {
      fmt.Println(
      pos(i),
      neg(-2*i),
      )
      }
      }
    • 위의 예에서 adder() 함수는 지역 변수 sum 을 초기화하고 입력받는 x를 더해주는 익명 함수를 반환합니다.

    • for문에서 함수가 실행될때마다 지역 변수가 초기화되지않고 더해주는 익명함수만을 통해 값이 지속적으로 증가/감소 하는것을 확인할 수 있습니다.

  • 연습 : 피보나치 클로져 - 문제

#

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×