create account

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

View this thread on: hive.blogpeakd.comecency.com
· @modolee · (edited)
$0.03
[The Go Programming Language] 2장 프로그램 구조 - 2.4 할당
![modolee_logo](https://steemitimages.com/DQmWQDjyP5d1RNW3mkCWUkDQ6yh3uDJFUZErPpaKBwKi4gM/iron_modolee.png)
안녕하세요. 개발자 모도리입니다.
**[The Go Programming Language](https://www.gopl.io/)** 라는 책으로 Go를 공부하고 있으며, 해당 책의 내용을 요약 정리해서 올리려고 합니다. 저는 [번역본](http://www.aladin.co.kr/shop/wproduct.aspx?ItemId=76703559)을 구매해서 공부하고 있습니다.
예제코드 라고 나오는 것들은 https://github.com/modolee/tgpl.git 에서 다운 받으실 수 있습니다.

### 지난 게시물
* [[Go] Mac에서 Atom으로 Go 개발 환경 구축하기](https://steemit.com/kr-dev/@modolee/go-mac-atom-go)
* [[The Go Programming Language] 1장 튜토리얼 - 1.1 Hello, World](https://steemit.com/kr-dev/@modolee/the-go-programming-language-1-hello-world)
* [[The Go Programming Language] 2장 프로그램 구조 - 2.1 이름](https://steemit.com/kr-dev/@modolee/the-go-programming-language-2-2-1)
* [[The Go Programming Language] 2장 프로그램 구조 - 2.2 선언](https://steemit.com/kr-dev/@modolee/the-go-programming-language-2-2-2)
* [[The Go Programming Language] 2장 프로그램 구조 - 2.3 변수](https://steemit.com/kr-dev/@modolee/the-go-programming-language-2-2-3)

---

# 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 타입 선언](https://steemit.com/kr-dev/@modolee/the-go-programming-language-2-2-5)
👍  , ,
properties (23)
authormodolee
permlinkthe-go-programming-language-2-2-4
categorykr-dev
json_metadata{"tags":["kr-dev","kr","go","golang","go-programstructure"],"image":["https://steemitimages.com/DQmWQDjyP5d1RNW3mkCWUkDQ6yh3uDJFUZErPpaKBwKi4gM/iron_modolee.png"],"links":["https://www.gopl.io/","http://www.aladin.co.kr/shop/wproduct.aspx?ItemId=76703559","https://github.com/modolee/tgpl.git","https://steemit.com/kr-dev/@modolee/go-mac-atom-go","https://steemit.com/kr-dev/@modolee/the-go-programming-language-1-hello-world","https://steemit.com/kr-dev/@modolee/the-go-programming-language-2-2-1","https://steemit.com/kr-dev/@modolee/the-go-programming-language-2-2-2","https://steemit.com/kr-dev/@modolee/the-go-programming-language-2-2-3","https://steemit.com/kr-dev/@modolee/the-go-programming-language-2-2-5"],"app":"steemit/0.1","format":"markdown"}
created2018-10-06 07:50:54
last_update2018-10-06 09:53:42
depth0
children0
last_payout2018-10-13 07:50:54
cashout_time1969-12-31 23:59:59
total_payout_value0.026 HBD
curator_payout_value0.007 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length2,387
author_reputation285,192,678,959
root_title"[The Go Programming Language] 2장 프로그램 구조 - 2.4 할당"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id72,727,419
net_rshares23,042,471,109
author_curate_reward""
vote details (3)