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
}
Salin selepas log masuk

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
}
Salin selepas log masuk

Modul Global:

 var serversetting *setting.serversettings
Salin selepas log masuk

Modul Utama:

 menetapkan, err: = setting.newsetting ()

menetapkan.ReadSection ("Server", & Global.ServerSetting)
Salin selepas log masuk

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)")
    }
}
Salin selepas log masuk

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 ())
}
Salin selepas log masuk

Menjalankan kod ini akan mendapat output berikut:

 palsu
Benar
Salin selepas log masuk

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

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.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 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 Java
1666
14
Tutorial PHP
1273
29
Tutorial C#
1252
24
Top5 dari bursa paling selamat pada tahun 2025: Panduan Hitam U untuk mengelakkan lubang, peraturan 100% dana untuk menyelamatkan nyawa Top5 dari bursa paling selamat pada tahun 2025: Panduan Hitam U untuk mengelakkan lubang, peraturan 100% dana untuk menyelamatkan nyawa May 08, 2025 pm 08:27 PM

Dalam bidang perdagangan cryptocurrency, keselamatan pertukaran selalu menjadi tumpuan pengguna. Pada tahun 2025, selepas bertahun -tahun pembangunan dan evolusi, beberapa pertukaran menonjol dengan langkah -langkah keselamatan dan pengalaman pengguna yang luar biasa. Artikel ini akan memperkenalkan lima pertukaran yang paling selamat pada tahun 2025 dan memberikan panduan praktikal tentang cara mengelakkan Black U (pengguna serangan penggodam) untuk memastikan dana anda 100% selamat.

Masa Depan GO: Trend dan Perkembangan Masa Depan GO: Trend dan Perkembangan May 02, 2025 am 12:01 AM

Go'sfutureisBrightWithTrendsLikeImprovedTooling, Generik, Cloud-NativeadOption, PerformanceEnhancements, dan WebassemblyIntegration, ButchallengesincludemaintainingsImplicityandImprovingErrorHandling.

Memahami Antara muka: Panduan Komprehensif Memahami Antara muka: Panduan Komprehensif May 01, 2025 am 12:13 AM

Gointerfacesaremethodsignaturesetsthattypesmustimplement,enablingpolymorphismwithoutinheritanceforcleaner,modularcode.Theyareimplicitlysatisfied,usefulforflexibleAPIsanddecoupling,butrequirecarefulusetoavoidruntimeerrorsandmaintaintypesafety.

10 aplikasi perdagangan mata wang maya digital teratas pada 2025 Ringkasan 10 aplikasi pertukaran mata wang digital teratas 10 aplikasi perdagangan mata wang maya digital teratas pada 2025 Ringkasan 10 aplikasi pertukaran mata wang digital teratas May 08, 2025 pm 05:24 PM

Kedudukan sepuluh aplikasi perdagangan mata wang maya digital teratas pada tahun 2025: 1. Binance: Memimpin dunia, menyediakan urus niaga yang efisien dan pelbagai produk kewangan. 2. OKX: Ia adalah inovatif dan pelbagai, menyokong pelbagai jenis urus niaga. 3. Huobi: stabil dan boleh dipercayai, dengan perkhidmatan berkualiti tinggi. 4. Coinbase: Bersahabat untuk pemula dan antara muka yang mudah. 5. Kraken: Pilihan pertama untuk peniaga profesional, dengan alat yang berkuasa. 6. Bitfinex: Perdagangan yang cekap, pasangan perdagangan yang kaya. 7. Bittrex: Pematuhan Keselamatan, Kerjasama Kawalan.

Tutorial muat turun terkini untuk versi OUYI Okx6.118.0 Tutorial muat turun terkini untuk versi OUYI Okx6.118.0 May 07, 2025 pm 06:51 PM

Tutorial muat turun terkini untuk OUYI Okx6.118.0 Versi: 1. Klik pada pautan cepat dalam artikel; 2. Klik pada muat turun (jika anda pengguna web, sila daftar maklumat terlebih dahulu). Versi Android terkini V6.118.0 mengoptimumkan beberapa fungsi dan pengalaman untuk membuat perdagangan lebih mudah. Kemas kini aplikasi sekarang untuk mengalami pengalaman perdagangan yang lebih melampau.

10 platform cryptocurrency teratas di dunia yang menyokong urus niaga pelbagai rantaian dikeluarkan pada tahun 2025 10 platform cryptocurrency teratas di dunia yang menyokong urus niaga pelbagai rantaian dikeluarkan pada tahun 2025 May 08, 2025 pm 07:15 PM

Menurut penilaian terkini dan trend industri dari institusi yang berwibawa pada tahun 2025, berikut adalah platform sepuluh cryptocurrency teratas di dunia yang menyokong urus niaga pelbagai rantaian, menggabungkan jumlah transaksi, inovasi teknologi, pematuhan dan analisis komprehensif reputasi pengguna:

Memahami fungsi init di GO: Tujuan dan Penggunaan Memahami fungsi init di GO: Tujuan dan Penggunaan May 01, 2025 am 12:16 AM

Thepurposeoftheinitfunctioningoistoinitializevariables, setupconfigurations, orperformnessarysetupbeforethemainfunctionExecutes.useinitby: 1) Placingitinyourcodetorunautomaticallybeforemain, 2) penyimpanan

Muat turun versi terkini OUYI OKX5.1 Muat turun versi terkini OUYI OKX5.1 May 07, 2025 pm 06:48 PM

Tutorial muat turun terkini untuk OUYI Okx6.118.0 Versi: 1. Klik pada pautan cepat dalam artikel; 2. Klik pada muat turun (jika anda pengguna web, sila daftar maklumat terlebih dahulu). Versi Android terkini V6.118.0 mengoptimumkan beberapa fungsi dan pengalaman untuk membuat perdagangan lebih mudah. Kemas kini aplikasi sekarang untuk mengalami pengalaman perdagangan yang lebih melampau.

See all articles