0Pricing
Go Academy · Pelajaran

Variabel Lingkungan

Timpa konfigurasi dari lingkungan

Variabel Lingkungan adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Mengapa Variabel Lingkungan

Metodologi Twelve-Factor App merekomendasikan penyimpanan konfigurasi di lingkungan. Variabel lingkungan memungkinkan biner yang sama berperilaku berbeda di lingkungan pengembangan, praproduksi, dan produksi tanpa mengubah berkas.

Viper dapat menambahkan lapisan variabel lingkungan di atas konfigurasi berkas.

Urutan Prioritas

Viper menentukan sebuah kunci dengan memeriksa sumber berdasarkan urutan prioritas, dari yang tertinggi:

  • Panggilan Set eksplisit
  • Opsi
  • Variabel lingkungan
  • Berkas konfigurasi
  • Nilai bawaan

Jadi, variabel lingkungan menimpa berkas, tetapi kalah dari Set eksplisit.

Mengaktifkan Dukungan Variabel Lingkungan

viper.AutomaticEnv() memberi tahu Viper untuk memeriksa variabel lingkungan pada setiap kunci yang Anda minta. Setelah itu, viper.GetString("port") akan memeriksa variabel lingkungan PORT.

viper.AutomaticEnv()
port := viper.GetString("port")

Menambahkan Prefiks

Untuk menghindari benturan dengan variabel lingkungan yang tidak berkaitan, tetapkan prefiks:

  • viper.SetEnvPrefix("myapp")
  • Sekarang kunci port dipetakan ke variabel lingkungan MYAPP_PORT

Viper mengubah kunci menjadi huruf besar dan menambahkan prefiks dengan garis bawah.

viper.SetEnvPrefix("myapp")
viper.AutomaticEnv()
fmt.Println(viper.GetString("port")) // reads MYAPP_PORT

Menangani Kunci Bertingkat

Variabel lingkungan tidak boleh berisi titik. Gunakan pengganti kunci untuk memetakan kunci bertitik ke garis bawah, sehingga server.port menjadi SERVER_PORT.

replacer := strings.NewReplacer(".", "_")
viper.SetEnvKeyReplacer(replacer)
viper.AutomaticEnv()
// server.port -> SERVER_PORT

Mengikat Satu Variabel

Alih-alih menggunakan mode otomatis, Anda dapat mengikat satu kunci secara eksplisit dengan viper.BindEnv. Ini berguna ketika nama variabel lingkungan tidak mengikuti konvensi prefiks Anda.

viper.BindEnv("id", "ACCOUNT_ID")
fmt.Println(viper.GetString("id"))

Paket os dalam Pustaka Standar

Di balik layar, proses ini membaca lingkungan proses yang disediakan oleh pustaka standar melalui os.Getenv dan os.LookupEnv.

  • os.Getenv mengembalikan teks kosong jika variabel tidak ditetapkan
  • os.LookupEnv mengembalikan boolean kedua yang memberi tahu apakah variabel tersebut ada
val, ok := os.LookupEnv("PORT")
if !ok {
    val = "8080" // default
}

Menetapkan Variabel Lingkungan di Go

Anda dapat menetapkan variabel lingkungan secara terprogram untuk pengujian atau nilai bawaan dengan os.Setenv. Inilah yang kami gunakan untuk menunjukkan perilaku penimpaan berikutnya.

os.Setenv("MYAPP_PORT", "9090")

Kosong vs Tidak Ditetapkan

Perhatikan: variabel lingkungan yang ditetapkan ke teks kosong tetap dianggap ada. os.LookupEnv mengembalikan ("", true). Jika Anda hanya menggunakan os.Getenv, Anda tidak dapat membedakan nilai kosong dari nilai yang tidak ditetapkan, dan hal ini penting untuk flag yang menyerupai boolean.

os.Setenv("FEATURE", "")
v, ok := os.LookupEnv("FEATURE")
fmt.Println(v == "", ok) // true true

Menyatukannya (Konsep)

Alur awal yang umum: baca berkas untuk mendapatkan nilai bawaan, lalu panggil AutomaticEnv agar variabel lingkungan penerapan memiliki prioritas. Tim operasi dapat mengubah MYAPP_PORT tanpa menyentuh YAML.

viper.SetConfigName("config")
viper.ReadInConfig()
viper.SetEnvPrefix("myapp")
viper.AutomaticEnv()
fmt.Println(viper.GetInt("port"))

Dapat Dijalankan: Demonstrasi Penimpaan Variabel Lingkungan

Program dengan pustaka standar ini meniru prioritas Viper: nilai bawaan dari berkas yang ditimpa oleh lingkungan.

package main

import (
    "fmt"
    "os"
)

func get(key, fileDefault string) string {
    if v, ok := os.LookupEnv(key); ok {
        return v
    }
    return fileDefault
}

func main() {
    os.Setenv("PORT", "9090")
    fmt.Println("port:", get("PORT", "8080"))
    fmt.Println("host:", get("HOST", "localhost"))
}

Pemeriksaan Singkat

Uji pemahaman Anda tentang konfigurasi variabel lingkungan.

Ringkasan

Anda telah mempelajari cara menimpa konfigurasi dari lingkungan:

  • Variabel lingkungan memiliki posisi tinggi dalam prioritas Viper, di atas berkas
  • AutomaticEnv + SetEnvPrefix memetakan kunci ke PREFIX_KEY
  • Gunakan SetEnvKeyReplacer untuk kunci bertingkat yang menggunakan titik
  • Pustaka standar mendukungnya melalui os.Getenv / os.LookupEnv

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Variabel Lingkungan” gratis?

Ya — teks lengkap “Variabel Lingkungan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Variabel Lingkungan”?

Timpa konfigurasi dari lingkungan Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Variabel Lingkungan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membaca File Konfigurasi
  2. Variabel Lingkungan
  3. Nilai Default dan Pemantauan
  4. Binding ke Struct
← Kembali ke Go Academy