[The Go Programming Language] 2장 프로그램 구조 - 2.4 할당

in #kr-dev6 years ago (edited)

modolee_logo
안녕하세요. 개발자 모도리입니다.
The Go Programming Language 라는 책으로 Go를 공부하고 있으며, 해당 책의 내용을 요약 정리해서 올리려고 합니다. 저는 번역본을 구매해서 공부하고 있습니다.
예제코드 라고 나오는 것들은 https://github.com/modolee/tgpl.git 에서 다운 받으실 수 있습니다.

지난 게시물


2장 프로그램 구조

2.4 할당

기본 할당

  • 변수 내의 값은 할당문에 의해 갱신되며, 할당문의 제일 단순한 형태는 = 기호의 왼쪽에 변수가 있고 오른쪽에 표현식이 있는 것입니다.
x = 1 // 명명된 변수
*p = true // 간접 변수
person.name = "bob" // 구조체 필드
count[x] = count[x] * scale // 배열이나 슬라이스 또는 맵 원소

2.4.1 튜플 할당

  • 튜플 할당 : 여러 변수를 한 번에 할당할 수 있음
  • 오른쪽의 모든 표현식은 변수가 갱신되기 전에 평가돼 특정 변수가 공교롭게 할당의 양쪽에 모두 나오는 경우에 유용합니다.
  • 두 변수 값을 서로 바꿀 때
x, y = y, x
a[i], a[j] = a[j], a[i]
  • 두 정수의 최대 공약수(GCD)
func gcd(x, y int) int {
  for y != 0 {
    x, y = y, x%y
  }
  return x
}
  • n번째 피보나치 수를 반복적으로 계산할 때
func fib(n int) int {
  x, y := 0, 1
  for i := 0; i < n; i++ {
    x, y = y, x+y
  }
  return x
}
  • 복수의 결과를 반환하는 함수, 표현식
f, err = os.Open("foo.txt") // 함수 호출이 두 값을 반환합니다.
v, ok = m[key] // 맵 조회
v, ok = x.(T) // 타입 지정
v, ok = <-ch // 채널 수신

// 불필요한 값은 빈 식별자에 할당할 수 있습니다.
_, err = io.Copy(dst, src) // 바이트 카운트 버림
_, ok = x.(T) // 타입만 확인하고 결과 버림

2.4.2 할당성

  • 묵시적인 할당
    • return문은 return문의 피연산자에 대응하는 반환 변수들을 묵시적으로 할당합니다.
    • 슬라이스와 같은 복합 타입에 대한 리터럴 표현식은 묵시적으로 각 요소들을 할당합니다.
medals := []strings{"gold", "silver", "bronze"}

// 위의 문장과 동일합니다.
var medals [3]string
medals[0] = "gold"
medals[1] = "silver"
medals[2] = "bronze"
  • 맵과 채널의 원소는 일반적인 변수는 아니지만, 이와 유사한 묵시적 할당 대상입니다.

이어보기

[The Go Programming Language] 2장 프로그램 구조 - 2.5 타입 선언