반응형
gcc 컴파일 명령어를 사용할 때는 -D 옵션을 이용해서 Source Code 밖에서 상수를 지정할 수 있었다.
그런데, Go Language에도 이런 똑같은 기능이 있을까?
답: Go에도 GCC와 똑같은 기능이 있다!!!
아래 예제처럼 하면 된다. ^^
매번 go build 명령을 입력하기 귀찮으니까, 아래처럼 go build 스크립트를 만들자.
$ cat my_go_build.sh
#!/bin/bash
export MY_APP_VERSION=0.1.0
go build -ldflags "-X main.appVersion=${MY_APP_VERSION} -X 'main.buildDate=$(date +%F) $(date +%T)' -X 'main.devNote=New Feature ABC is added'"
$
go source code를 작성하자. (아래는 예시를 위해서 간단하게 만든 것이니까, 참고만 할것 !!!)
$ cat main.go
package main
import (
"fmt"
)
func main() {
getAppVersion()
// My Main Routine ...
fmt.Printf("My Main Routing ...\n")
}
$
`go build -ldflags "-X ... -X ... -X ..."` 이런 식으로 입력한 외부 상수를 go source code 내부에서 참조(reference)할 수 있도록 아래와 같이 변수를 선언하고, 사용하자 !!!
package main
import (
"fmt"
)
var (
appVersion string
buildDate string
devNote string
)
func getAppVersion() {
fmt.Printf("App Name : almighty\n")
fmt.Printf("Version : %s\n", appVersion)
fmt.Printf("Build Date : %s\n", buildDate)
fmt.Printf("Dev Note : %s\n", devNote)
}
위와 같이 go source code가 작성되었다면, 아래와 같이 build하고 실행 바이너리 파일을 실행해보자.
$ my_go_build.sh
$ my_example_app
App Name : almighty
Version : 0.1.0
Build Date : 2022-07-05 16:18:12
Dev Note : New Feature ABC is added
My Main Routing ...
$
'Golang' 카테고리의 다른 글
Go Programming Language (Go 언어 프로그래밍) - 학습 문서, 도서 (0) | 2024.04.25 |
---|---|
Golang 예제 - Source IP address를 지정한 TCP Client 구현 (Source IP Address Binding) (0) | 2023.09.20 |
Go Package 및 Module 사용 예제 (0) | 2022.03.06 |
Golang REST API (0) | 2022.02.11 |
Go 언어 - Cobra Library를 이용하여 CLI Command 구현 (0) | 2021.11.24 |