반응형

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 ...

$

+ Recent posts