Go linker ( tautan alat go ) memiliki opsi untuk mengatur nilai variabel string yang tidak diinisialisasi:
-X importpath.name=value
Set the value of the string variable in importpath named name to
nilai. Perhatikan bahwa sebelum Go 1.5 opsi ini mengambil dua argumen terpisah. Sekarang dibutuhkan satu pemisahan argumen pada tanda = pertama.
Sebagai bagian dari proses build Anda, Anda bisa mengatur variabel string versi menggunakan ini. Anda dapat melewati ini melalui go
alat menggunakan -ldflags
. Misalnya, diberikan file sumber berikut:
package main
import "fmt"
var xyz string
func main() {
fmt.Println(xyz)
}
Kemudian:
$ go run -ldflags "-X main.xyz=abc" main.go
abc
Untuk menetapkan main.minversion
tanggal dan waktu saat membangun:
go build -ldflags "-X main.minversion=`date -u +.%Y%m%d.%H%M%S`" service.go
Jika Anda mengkompilasi tanpa menginisialisasi main.minversion
dengan cara ini, itu akan berisi string kosong.
go bouild
bukango run
?go build -ldflags "-X main.minversion `date -u +.%Y%m%d%.H%M%S`" service.go
go build -ldflags "-X 'main.buildtime=$(date -u '+%Y-%m-%d %H:%M:%S')'"
go build -ldflags "-X pkg.version=123"
tidak akan bekerja sambilgo build -ldflags "-X path/to/pkg.version=123"
bekerja seperti yang diharapkan. semoga membantu.Selain itu saya ingin memposting contoh kecil cara menggunakan git dan makefile:
File make akan membuat dua file executable. Satu menjalankan fungsi satu, yang lain akan mengambil fungsi dua sebagai entri utama:
Kemudian jalankan:
Kamu akan mendapatkan:
sumber
Saya mengalami masalah dalam menggunakan
-ldflags
parameter ketika membangun proyek command-line dan proyek perpustakaan saya, jadi saya akhirnya menggunakan target Makefile untuk menghasilkan file sumber Go yang berisi versi aplikasi saya dan tanggal pembuatan:Dalam
init()
metode saya , saya melakukan ini:Namun, jika Anda menginginkan nomor build yang bertambah secara atomis daripada tanggal build, Anda mungkin perlu membuat file lokal yang berisi nomor build terakhir. Makefile Anda akan membaca konten file ke dalam variabel, menambahkannya, memasukkannya ke dalam
version.go
file alih-alih tanggal, dan menulis nomor build baru kembali ke file.sumber
Gunakan
ldflags
untuk mengatur variabel dalammain
paket:Dengan file
main.go
:Lalu lari:
Membangun:
Gunakan
ldflags
untuk mengatur variabel dalam suatunon-main
paket:Dengan file
config.go
:Anda juga membutuhkan file
main.go
:Bangun biner Anda terlebih dahulu:
Temukan path lengkap nama variabel yang ingin Anda atur:
Jalankan dan bangun biner lagi tetapi dengan
ldflags
:Terinspirasi oleh https://github.com/golang/go/wiki/GcToolchainTricks#including-build-information-in-the-executable
Juga jika Anda menggunakan
goreleaser
maka baca https://goreleaser.com/#using-the-main-version ini :Jika Anda ingin melihat ini dalam tindakan: https://github.com/hoto/fuzzy-repo-finder/blob/master/pkg/config/config.go
sumber
untuk menggunakan multi
-ldflags
:sumber
Pada Windows OS diberikan program di bawah ini
Anda bisa membangun menggunakan
Format tanggal mengasumsikan lingkungan Anda
echo %date%
adalahFri 07/22/2016
danecho %time%
sekarang16:21:52.88
Maka outputnya adalah:
version=0.0.1, date=2016-07-22T16:21:52
sumber