Bugün üzerinde çalıştığım bir şey için uğraşıyordum ve beklediğimden daha sinir bozucuydu. Sonunda, bu benim yaptığım çeşitli testlerde benim için işe yaramış görünüyordu ('titiz' testleri değil). Birden yolları GOPATH listelenen eğer ben 1'den fazla yol listelenen olacak birkaç şüpheli ve go get
kaynağını koyar nerede birinci sanırım (olurdu, sadece 1 yolunu kullanmaya karar
goPath := strings.Split(os.Getenv("GOPATH"), string(os.PathListSeparator))
if len(goPath) == 0 {
goPath = append(goPath, build.Default.GOPATH)
} else if goPath[0] == "" {
goPath[0] = build.Default.GOPATH
}
Not). Bu kod, yolların geçerli olup olmadığını da dikkate almaz.
Ayrıca, GOPATH'ı aldıktan sonra bir dosya yolu oluşturmak için path/filepath.Join()
'u path.Join()
kullanmam gerektiğine dikkat edin. Birincisi, ilk argümanın \, ve/veya diğerleri için \ windows'ları kullanır. Pencereler görünüşe göre yolları kabul etse de, tüm PATH ve GOPATH benzeri çevresel değişkenler pencerelerin normalleriyle yazılır. path.Join()
kullanılmış/geçersiz bir yol üretiyor.
1.8'de, GOPATH env var isteğe bağlıdır. Kullanıcı buna sahip değilse ne olur? Varsayılan olanı almanın bir yolu var mı? Gitme zamanının, Gopath'ı almanın bir yolu olması gerektiğini düşünüyorum. – tothemario
@tothemario Go 1.8'den beri geçerli olan GOPATH'i nasıl alabileceğinizi bir cevap gönderdim. Ancak, ideal olarak çalışma zamanının kullanıcının “GOPATH” 'ını elde etmenin bir yolunu sağlaması gerektiğine katılıyorum. – tmh
@tothemario, Go 1.8'in varsayılan go yolu uygulamasından kodu kullanarak güncellenmiş yanıtı. – codefreak