안녕하세요. 개발자 모도리입니다.
The Go Programming Language 라는 책으로 Go를 공부하고 있으며, 해당 책의 내용을 요약 정리해서 올리려고 합니다. 저는 번역본을 구매해서 공부하고 있습니다.
예제코드 라고 나오는 것들은 https://github.com/modolee/tgpl.git 에서 다운 받으실 수 있습니다.
int : 루프 인덱스, 타임스탬프, 파일 디스크립터, 개월 수float64 : 길이(m), 속도(m/s), 온도string : 암호, 색상의 이름type 이름 내부타입package tempconv0
import "fmt"
type Celsius float64
type Fahrenheit float64
const (
AbsoluteZeroC Celsius = -273.15
FreezingC Celsius = 0
BoilingC Celsius = 100
)
func CToF(c Celsius) Fahrenheit { return Fahrenheit(c*9/5 + 32) }
func FToC(f Fahrenheit) Celsius { return Celsius((f - 32) * 5 / 9) }
func (c Celsius) String() string { return fmt.Sprintf("%gºC", c) }
예제코드 [ch2/tempconv0/tempconv0.go]
==나 < 같은 비교 연산자로 비교할 수 있습니다.package tempconv0
import "fmt"
func Example1() {
fmt.Printf("%g\n", BoilingC-FreezingC) // "100"
boilingF := CToF(BoilingC)
fmt.Printf("%g\n", boilingF-CToF(FreezingC)) // "180"
//fmt.Printf("%g\n", boilingF-tempconv0.FreezingC) // 컴파일 오류 : 타입 불일치
}
func Example2() {
var c Celsius
var f Fahrenheit
fmt.Println(c == 0) // "true"
fmt.Println(f >= 0) // "true"
//fmt.Println(c == f) // 컴파일 오류 : 타입 불일치
fmt.Println(c == Celsius(f)) // "true"!
}
func Example3() {
c := FToC(212.0)
fmt.Println(c.String()) // "100ºC"
fmt.Printf("%v\n", c) // "100ºC"
fmt.Printf("%s\n", c) // "100ºC"
fmt.Println(c) // "100ºC"
fmt.Printf("%g\n", c) // "100"; String을 호출하지 않음
fmt.Println(float64(c)) // "100"; String을 호출하지 않음
}
예제코드 [ch2/tempconv0/examples.go]
패키지 사용을 위한 위치 지정
위의 예제코드들은 패키지로 만들어져 있어서 실제 실행을 위해서는 main 패키지를 만들어서 실행해야 합니다.
패키지의 위치는 GOPATH로 지정한 경로의 src 폴더가 루트 경로가 됩니다.
저는~/Dev/go/를 GOPATH로 지정했습니다.
그래서 package 파일들은~/Dev/go/src/밑에 저장하고 있으며tgpl/ch2/tempconv0형태로 폴더를 만들고 패키지 폴더를 만들어서 폴더 별로 패키지를 저장합니다.
그냥 테스트 실행을 위한 파일들은 아래 예제코드와 같이ch2/루트에 위치해 했습니다.
package main
import (
"fmt"
"tgpl/ch2/tempconv0"
)
func main() {
fmt.Println("<<-- Example1 -->>")
tempconv0.Example1()
fmt.Println("<<-- Example2 -->>")
tempconv0.Example2()
fmt.Println("<<-- Example3 -->>")
tempconv0.Example3()
}
예제코드 [ch2/tempconv0_main.go]
실행결과
$ go run ch2/tempconv0_main.go
<<-- Example1 -->>
100
180
<<-- Example2 -->>
true
true
true
<<-- Example3 -->>
100ºC
100ºC
100ºC
100ºC
100
100