GOOS=js
- Go kursu
- Uzman
- Ders 26/34
- 4 dk
GOOS=js GOARCH=wasm ile derlemeyi öğrenirsin.
GOOS ve GOARCH
Go'da çapraz derleme iki ortam değişkeniyle yapılır; ek araç zinciri gerekmez (cgo kapalıyken):
GOOS=linux GOARCH=arm64 go build # Raspberry Pi, AWS Graviton
GOOS=windows GOARCH=amd64 go build # .exe
GOOS=darwin GOARCH=arm64 go build # Apple Silicon
go tool dist list # tüm hedeflerDosya adı son ekleri (_windows.go, _wasm.go) ve //go:build satırları hedefe özel kod seçer.
Hedefe göre davranış
Aynı API'yi farklı hedeflerde farklı uygulamak için iki dosya ve ortak bir fonksiyon adı kullanılır:
// depo_js.go
//go:build js
func kaydet(k, v string) { localStorage.Set(k, v) }
// depo_other.go
//go:build !js
func kaydet(k, v string) { os.WriteFile(k, []byte(v), 0o644) }Çalışma anında hedefi sorgulamak için runtime.GOOS da kullanılabilir.
Uygulama Hedefe göre metin
platform() string yaz: runtime.GOOS == "js" ise "tarayıcı", değilse "yerel" döndürsün. Sonucu yazdır.
Başlangıç kodu
package main
import (
"fmt"
"runtime"
)
func main() {
// buraya yaz
}Örnek çözüm
package main
import (
"fmt"
"runtime"
)
func platform() string {
if runtime.GOOS == "js" {
return "tarayıcı"
}
return "yerel"
}
func main() {
fmt.Println(platform())
}Beklenen çıktı
yerel
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>dosya_js.go</code> adlı dosya ne zaman derlenir?
- Yalnızca testlerde
- Hiçbir zaman
- Yalnızca GOOS=js iken Doğru cevap
- Her zaman
Açıklama: _GOOS ve _GOARCH son ekleri örtük derleme kısıtıdır; dosya yalnızca eşleşen hedefte derlemeye girer.
2 Hedefleri listele
go tool dist ____
go tool dist list
Açıklama: go tool dist list desteklenen tüm GOOS/GOARCH çiftlerini yazdırır.
3 Hedef çifti
| Kavram | Anlamı |
|---|---|
linux/arm64 |
Raspberry Pi, Graviton |
windows/amd64 |
.exe dosyası |
js/wasm |
Tarayıcı |
darwin/arm64 |
Apple Silicon |