Jadual Kandungan
GO Pointer Syntax dan menangani masalah dalam penggunaan Perpustakaan Viper
Rumah pembangunan bahagian belakang Golang Kenapa perlu lulus petunjuk apabila menggunakan perpustakaan Go dan Viper?

Kenapa perlu lulus petunjuk apabila menggunakan perpustakaan Go dan Viper?

Apr 02, 2025 pm 04:00 PM
pergi bahasa ai kenapa igs

GO Pointer Syntax dan menangani masalah dalam penggunaan Perpustakaan Viper

Apabila pengaturcaraan di GO, adalah penting untuk memahami sintaks dan penggunaan petunjuk, terutamanya apabila digunakan dalam kombinasi dengan perpustakaan pihak ketiga seperti Viper, anda mungkin menghadapi beberapa isu yang memerlukan pemahaman yang mendalam. Persoalan yang akan kita bincangkan hari ini adalah tentang bagaimana untuk lulus parameter dengan betul dalam penggunaan perpustakaan Viper dan mengapa lulus penunjuk ke penunjuk diperlukan.

Terdapat beberapa modul dalam projek kami: penetapan, seksyen, global dan utama. Kod khusus adalah seperti berikut:

Menetapkan Modul:

 Taipkan tetapan struct {
    vp *viper.viper
}

func newssetting () (*tetapan, ralat) {
    VP: = viper.new ()
    VP.SetConfigname ("Config")
    VP.AddConfigPath ("Configs/")
    VP.SetConfigType ("Yaml")
    err: = vp.readinconfig ()
    jika err! = nil {
        Kembali nih, Err
    }

    kembali & menetapkan {vp: vp}, nil
}

Modul Bahagian:

 Taipkan serversettings struct {
    RunMode String
    HTTPPORT String
    baca time.duration
    WriteTimeout Time.Duration
}

Func (S *Setting) ReadSection (K String, V Interface {}) ERROR {
    Err: = s.vp.unmarshalkey (k, v)
    jika err! = nil {
        kembali err
    }

    kembali nih
}

Modul Global:

 var serversetting *setting.serversettings

Modul Utama:

 menetapkan, err: = setting.newsetting ()

menetapkan.ReadSection ("Server", & Global.ServerSetting)

Sekarang, jika anda mengubah suai baris kedua untuk menetapkan.ReadSection ("Server", Global.ServerSetting) Dalam modul utama, hasil ralat mesti ditangani (penunjuk). Mengapa ini?

Masalahnya ialah global.ServerSetting sudah menjadi penunjuk, mengapa anda perlu lulus alamatnya apabila memanggil kaedah ReadSection?

Terdapat penerangan dalam kod sumber Perpustakaan Viper:

 // NewDecoder mengembalikan penyahkod baru untuk konfigurasi yang diberikan. sekali
// penyahkod telah dikembalikan, konfigurasi yang sama tidak boleh digunakan
// lagi.
Func NewDecoder (config *decoderConfig) ( *decoder, error) {
    val: = reflect.valueof (config.result)
    jika val.kind ()! = reflect.ptr {
        kembali nil, errors.new ("Hasil mestilah penunjuk")
    }

    val = val.elem ()
    jika! val.canaddr () {
        kembali nih, errors.new ("Hasil mesti ditangani (penunjuk)")
    }
}

Dari kod ini, kita dapat melihat bahawa parameter yang diluluskan bukan sahaja perlu menjadi penunjuk, tetapi juga perlu ditangani (boleh ditangani). Apabila anda lulus penunjuk ke struktur, ia tidak dapat ditangani dengan sendirinya, sehingga menyebabkan kesilapan.

Untuk mengesahkan ini, kita dapat melihat contoh berikut:

 Pakej utama

import (
    "FMT"
    "Renungkan"
)

var a *db

taip db struct {
}

func main () {
    val: = reflect.valueof (a)
    val = val.elem ()
    fmt.println (val.canaddr ())

    val = reflect.valueof (& a)
    val = val.elem ()
    fmt.println (val.canaddr ())
}

Menjalankan kod ini akan mendapat output berikut:

 palsu
Benar

Ini menunjukkan bahawa apabila A diluluskan (iaitu penunjuk), unsur -unsurnya tidak dapat ditangani, sementara ketika & A diluluskan (iaitu penunjuk penunjuk), unsur -unsurnya dapat ditangani.

Oleh itu, apabila menggunakan kaedah pembacaan, kita perlu lulus & global.

Atas ialah kandungan terperinci Kenapa perlu lulus petunjuk apabila menggunakan perpustakaan Go dan Viper?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Mejiro Ryan Build Guide | Uma Musume Pretty Derby
1 bulan yang lalu By Jack chen
Rimworld Odyssey Cara Ikan
4 minggu yang lalu By Jack chen
Apakah had transaksi untuk pengguna asing di Alipay?
4 minggu yang lalu By 下次还敢

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1504
276
Ethereum, platform blockchain yang melepasi bitcoin, dengan kelebihan dan inventori inovasi Ethereum, platform blockchain yang melepasi bitcoin, dengan kelebihan dan inventori inovasi Aug 06, 2025 pm 11:57 PM

Melalui kontrak pintar yang lengkap, mesin maya EVM dan mekanisme gas, Ethereum telah membina platform blockchain yang boleh diprogramkan di luar Bitcoin, menyokong ekosistem aplikasi yang pelbagai seperti DEFI dan NFT; Kelebihan terasnya termasuk ekosistem Dapp yang kaya, pengaturcaraan yang kuat, komuniti pemaju aktif dan interoperabilitas rantaian rentas; Ia sedang melaksanakan transformasi konsensus dari POW ke POS melalui peningkatan Ethereum 2.0, memperkenalkan rantaian suar, mekanisme pengesahan dan sistem hukuman untuk meningkatkan kecekapan tenaga, keselamatan dan desentralisasi; Pada masa akan datang, ia akan bergantung kepada teknologi sharding untuk merealisasikan pemprosesan data dan pemprosesan selari, sangat meningkatkan daya tampung; Pada masa yang sama, teknologi rollup telah digunakan secara meluas sebagai penyelesaian Layer 2, rollup optimis dan zk-rollu

Ramalan Harga Solana (Sol Coin): 2025-2030 dan Outlook Masa Depan Ramalan Harga Solana (Sol Coin): 2025-2030 dan Outlook Masa Depan Aug 06, 2025 pm 08:42 PM

Jadual Kandungan Sejarah Harga Solana dan Data Pasaran Penting Data Penting dalam Carta Harga Solana: 2025 Ramalan Harga Solana: Optimis 2026 Ramalan Harga Solana: Mengekalkan Trend 2026 Ramalan Harga Solana: 2030 Ramalan Harga Jangka Panjang Solana: Ramalan Blok Teratas? Apa yang mempengaruhi ramalan harga matahari? Skalabiliti dan Solana: Kelebihan Kompetitif Sekiranya anda melabur di Solana dalam beberapa tahun akan datang? Kesimpulan: Prospek Harga Solana Kesimpulan: Solana mempunyai skalabilitas yang sangat baik, kos urus niaga yang rendah dan kecekapan yang tinggi

Dari blockchain ke cryptocurrency, analisis lengkap konsep asas Dari blockchain ke cryptocurrency, analisis lengkap konsep asas Aug 06, 2025 pm 11:51 PM

Blockchain adalah teknologi lejar digital yang diedarkan dan terdesentralisasi. Prinsip terasnya termasuk: 1 Lejar yang diedarkan memastikan data disimpan serentak pada semua nod; 2. Teknologi penyulitan, menghubungkan blok melalui nilai hash untuk memastikan data tidak diganggu; 3. Mekanisme konsensus, seperti POW atau POS, memastikan urus niaga dipersetujui antara nod; 4. Desentralisasi, menghapuskan satu titik kawalan, meningkatkan rintangan penapisan; 5. Kontrak pintar, protokol untuk pelaksanaan automatik. Cryptocurrency adalah aset digital yang dikeluarkan berdasarkan blockchain. Proses operasi adalah: 1. Pengguna memulakan urus niaga dan tanda secara digital; 2. Urus niaga disiarkan ke rangkaian; 3. Pelombong atau pengesahan mengesahkan kesahihan transaksi; 4. Pelbagai urus niaga dibungkus ke dalam blok baru; 5. Sahkan zon baru melalui mekanisme konsensus

Berapakah harga masa depan Memefi (MEMEFI Mata Wang)? Ramalan Harga untuk 2025, 2026, 2027-2030 Berapakah harga masa depan Memefi (MEMEFI Mata Wang)? Ramalan Harga untuk 2025, 2026, 2027-2030 Aug 08, 2025 pm 11:09 PM

Apakah mata wang memefi dalam direktori? Memefi Gameplay PENGENALAN Memefi (Memefi) Ramalan Harga Memefi (Memefi) Ramalan Harga: EMA Cluster dan Bollinger Band Extrusion Breakthrough Memefi (Memefi) Ramalan Harga: RSI dan Arah Trend Trend Memefi (Memefi) Ramalan harga 2027 Memefi (Memefi) dari 2028 Memefi (Memefi) 2

Gunakan ETH untuk menukar USDC atau DAI, dan bandingkan yuran pengendalian dengan kelajuan ketibaan Gunakan ETH untuk menukar USDC atau DAI, dan bandingkan yuran pengendalian dengan kelajuan ketibaan Aug 06, 2025 pm 10:30 PM

ETH Exchange USDC lebih sesuai untuk pengguna yang mengejar kecairan dan keserasian silang platform, sementara penebusan DAI lebih sesuai untuk pengguna yang mengambil bahagian dalam ekosistem DEFI dan DAO; 1. Yuran platform berpusat adalah 0.1%~ 0.2%, dan Suruhanjaya Dex bergantung kepada yuran gas. Rangkaian utama adalah kira -kira 3 hingga 6 dolar AS, dan Layer2 boleh kurang daripada 0.1 dolar AS; 2. Dari segi kelajuan ketibaan akaun, platform berpusat hampir hampir masa nyata, dengan urus niaga rantaian pada purata 30 saat hingga 2 minit; 3. Pasangan perdagangan USDC lebih kaya dan lebih cair, DAI sangat mudah disesuaikan dalam protokol DEFI dan yuran pengendalian sedikit lebih rendah di beberapa kolam; 4. Adalah disyorkan untuk mengelakkan operasi rangkaian puncak, dan penebusan kecil lebih disukai. Transaksi DEX memberi perhatian kepada keselamatan kebenaran kontrak untuk memastikan keserasian rangkaian pengeluaran stablecoin. Kedua -duanya berada dalam yuran pengendalian.

Evaluasi Diskaun Exchange Cryptocurrency Ogos: Pengurangan Bayaran Pengguna dan Pengendalian Pengendalian Baru Evaluasi Diskaun Exchange Cryptocurrency Ogos: Pengurangan Bayaran Pengguna dan Pengendalian Pengendalian Baru Aug 08, 2025 pm 11:15 PM

Jadual Kandungan: Diskaun Exchange Ogos Binance (Binance): Diskaun Pertukaran Bybit Ogos: August MEXC Matcha Exchange Discounts: Ogos Bitfinex (Green Leaf) Diskaun Pertukaran: Cryptocurrency Exchange Ranking Artikel ini akan menyusun tawaran terkini dari pertukaran cryptocurrency utama pada bulan Ogos 2025, dan satu artikel membolehkan pembaca untuk menikmati manfaat terbaik. Apa yang baru-baru ini dalam bulatan mata wang tidak tahu ialah kebanyakan pertukaran mempunyai tawaran aplikasi tersembunyi, termasuk: pengurangan bayaran (pengurangan 10-20%) bonus akaun baru (boleh berfungsi sebagai margin, penggunaan

Ramalan Harga Cardano (ADA Coin): 2025, 2026 dan seterusnya Ramalan Harga Cardano (ADA Coin): 2025, 2026 dan seterusnya Aug 06, 2025 pm 07:33 PM

Jadual Kandungan Apa itu Cardano? Ciri -ciri utama Cardano Bagaimana Cardano berfungsi? Kenapa Cardano layak untuk mempertimbangkan harga dan sejarah prestasi pasaran 2025 ADA ramalan 2025, 2026 dan 2027 ramalan harga 2040 dan 2030 Faktor ramalan harga ADA yang mempengaruhi analisis carta ADA dan Outlook Teknikal Cardano Ramalan jadual: Cardano adalah pengasas bersama Ethereum.

Bagaimana menggunakan 5,000 yuan untuk memperoleh 500,000 yuan dalam bulatan mata wang? Bagaimana menggunakan 5,000 yuan untuk memperoleh 500,000 yuan dalam bulatan mata wang? Aug 07, 2025 pm 08:42 PM

Dalam bidang mata wang digital, pelbagai pembolehubah dan peluang penuh, meningkatkan prinsipal 5,000 hingga 500,000 bermakna seratus kali penghargaan aset perlu dicapai. Ini bukan permainan matematik yang mudah, tetapi ujian komprehensif yang melibatkan kognisi, strategi, mentaliti dan pelaksanaan. Ia memerlukan peserta untuk tidak bergantung semata -mata kepada nasib, tetapi juga mempunyai wawasan pasaran yang berminat dan keupayaan pengurusan risiko yang luar biasa.

See all articles