작성일: 2024년 12월 17일
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 |