প্যাকেজে ldflags
ভেরিয়েবল সেট করতে ব্যবহার করুন main
:
ফাইল সহ main.go
:
package main
import "fmt"
var (
version string
build string
)
func main() {
fmt.Println("version=", version)
fmt.Println("build=", build)
}
তারপরে চালান:
go run \
-ldflags "-X main.version=1.0.0 -X main.build=12082019" \
main.go
বিল্ড:
go build -o mybinary \
-ldflags "-X main.version=1.0.0 -X 'main.build=$(date)'" \
main.go
ldflags
একটি non-main
প্যাকেজে ভেরিয়েবল সেট করতে ব্যবহার করুন :
ফাইল সহ config.go
:
package config
import "fmt"
var (
Version string
)
func LogVersion() {
fmt.Println("version=", Version)
}
আপনার ফাইলও লাগবে main.go
:
package main
import (
"fmt"
"github.com/user/repo/config"
}
func main() {
config.LogVersion()
}
প্রথমে আপনার বাইনারি তৈরি করুন:
go build -o mybinary main.go
আপনি সেট করতে চান ভেরিয়েবলের পুরো পথটি সন্ধান করুন:
go tool nm <path_to_binary> | grep Version
আবার বাইনারি চালান এবং তৈরি করুন তবে এর সাথে ldflags
:
go run \
-ldflags "-X github.com/user/repo/config.Version=1.0.0" \
main.go --version
go build -o mybinary \
-ldflags "-X github.com/user/repo/config.Version=1.0.0" \
main.go
Https://github.com/golang/go/wiki/GcToolchainTricks# অন্তর্ভুক্ত- বিল্ড-ইনফরমেশন- ইন- থি- এক্সকিউটেবল দ্বারা অনুপ্রাণিত
এছাড়াও যদি আপনি ব্যবহার করেন goreleaser
তবে এই https://goreleaser.com/# using- the-main- version পড়ুন :
ডিফল্ট বুদ্ধিমান GoReleaser তিনটি ldflags সেট করে:
main.version: বর্তমান গিট ট্যাগ
main.commit: বর্তমান গিট কমিট SHA
মেইন ডেট: আরএফসি 3339 অনুসারে তারিখ
আপনি যদি এটিকে ক্রিয়াতে দেখতে চান: https://github.com/hoto/fuzzy-repo-finder/blob/master/pkg/config/config.go
go bouild
পরিবর্তে ব্যবহার করা হলে সেই মানটি বাইনারিটিতে সংরক্ষণ করা হবেgo run
?