즉, 프로그램을 여러개의 파일로 분리하여 작성하는 개념.
여러개의 파일로부터, 하나의 실행파일을 빌드하는 개념.
GO 언어에서는 이것이 어떻게 구현되어 있을까.
핵심은 환경변수 GOPATH 를 설정하는것에 있다.
사용할 workspace 경로를 환경변수 GOPATH 에 설정해주고,
그 경로에 다음과 같은 디렉토리를 만든다.
bin
pkg
src
GO 언어에서는 메인함수의 하위 모듈들을 "package" 라는 이름으로 부른다.
메인함수가 들어있는 파일과 package 파일들을 src 폴더에 작성한다.
여기서는 4개의 파일을 작성해본다.
src/
hello24.go
src/ example / newmath /
sqrt.go
even.go
src/ odd/
odd.go
<hello24.go>
package main
import (
"fmt"
"example/newmath"
"odd"
)
func main() {
fmt.Printf( " Sqrt(2) = %v\n", newmath.Sqrt(2))
fmt.Printf( " Even(2) = %v\n", newmath.Even(2))
fmt.Printf( " Odd(2) = %v\n", odd.Odd(2))
}
<sqrt.go>
package newmath
// Sqrt returns an approximation to the square root of x.
func Sqrt(x float64) float64 {
// This is a terrible implementation.
// Real code should import "math" and use math.Sqrt.
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z - x) / ( 2 * x)
}
return z
}
<even.go>
package newmath
func Even( i int) bool {
return i % 2 == 0
}
<odd.go>
package odd
func Odd( i int) bool {
return i % 2 == 1
}
다음 그림은 workspace 를 빌드하고, 실행시켜본 결과이다.
package 에 있는 함수가 호출되고 있음을 확인할 수 있다.
음...
Makefile 이나 configuration file 을 사용하지 않는다는 점.
의존성이 소스코드형태( import )로 서술된다는 점.
댓글 없음:
댓글 쓰기