
안녕하세요. 개발자 모도리입니다.
**[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)
---
# 2장 프로그램 구조
## 2.2 선언
### 상수, 변수, 함수 선언
```
// Boiling은 물의 끓는점을 출력합니다.
package main
import "fmt"
const boilingF = 212.0
func main() {
var f = boilingF
var c = (f - 32) * 5 / 9
fmt.Printf("boiling point = %gºF or %gºC\n", f, c)
// 출력:
// boiling pint = 212 ºF or 100ºC
}
```
*예제코드 [ch2/boiling.go]*
> **실행결과**
> $ go run ch2/boiling.go
> boiling point = 212ºF or 100ºC
* **상수, 변수 선언**
* 상수 boilingF는 패키지 수준 선언
* 변수 f, c는 main 함수의 지역 변수
* 각 패키지 수준 개체의 이름은 선언을 포함하는 소스 파일 뿐만 아니라 패키지 내의 모든 파일에서 볼 수 있습니다.
* 지역 선언은 선언된 함수 내에서만 볼 수 있으며, 그 중 일부에서만 볼 수 있는 경우도 있습니다.
* **함수 선언**
* 함수 선언 : 이름, 파라미터 목록, 결과 목록(optional), 여러 구문으로 함수의 작업을 정의하는 함수 본문
* 함수가 결과를 반환하지 않을 때는 결과 목록을 생략합니다.
* 함수는 첫번째 구문에서 시작해서 return문을 만나거나 결과가 없는 경우 함수의 끝에 도달할 때 까지 실행됩니다.
### 함수 선언 - 캡슐화
```
// Ftoc는 화씨-섭씨 변환을 두 번 출력합니다.
package main
import "fmt"
func main() {
const freezingF, boilingF = 32.0, 212.0
fmt.Printf("%gºF = %gºC\n", freezingF, fToC(freezingF)) // "32ºF = 0ºC"
fmt.Printf("%gºF = %gºC\n", boilingF, fToC(boilingF)) // "212ºF = 100ºC"
}
func fToC(f float64) float64 {
return (f - 32) * 5 / 9
}
```
*예제코드 [ch2/ftoc.go]*
> **실행결과**
> $ go run ch2/ftoc.go
> 32ºF = 0ºC
> 212ºF = 100ºC
* 함수를 한번 정의하면 여러 곳에서 호출하여 사용할 수 있습니다.
---
### 이어보기
[[The Go Programming Language] 2장 프로그램 구조 - 2.3 변수](https://steemit.com/kr-dev/@modolee/the-go-programming-language-2-2-3)