


Tidak boleh mendapatkan pustaka Golang untuk mengembalikan apa-apa selain nil kepada pengawal
editor php Baicao memperkenalkan anda kepada masalah: perpustakaan Golang tidak boleh mengembalikan apa-apa kecuali tiada kepada pengawal. Dalam pembangunan Golang, pengawal ialah komponen utama dalam mengendalikan permintaan, tetapi kadangkala anda mungkin menghadapi masalah tidak dapat mengembalikan kandungan selain daripada tiada. Ini boleh menyebabkan beberapa ciri tidak berfungsi dengan betul. Nasib baik, terdapat beberapa penyelesaian yang boleh kami ambil untuk menyelesaikan masalah ini dan memastikan perpustakaan mengembalikan apa yang diperlukannya. Dalam artikel ini, kami akan meneroka beberapa penyelesaian biasa untuk membantu anda menyelesaikan isu ini.
Isi soalan
Saya budak golang di sini, jadi saya rasa saya kehilangan sesuatu yang jelas. Selepas beberapa hari mencuba, saya memutuskan untuk mendapatkan bantuan. :-)
Kod yang saya siarkan berfungsi kecuali dalam kes di mana pengguna meminta penciptaan sijil/beg kunci pelanggan baharu (ini ialah webui pengurusan pelayan openvpn) dan pelanggan dengan nama yang sama sudah wujud. Walaupun dalam kes ini, pakej pelanggan baharu tidak dibuat, tetapi mesej amaran yang salah dipaparkan yang menunjukkan bahawa pakej pelanggan baharu telah dibuat.
Saya tahu saya perlu mereka bentuk semula pengawal untuk menunjukkan sepanduk amaran yang berbeza bergantung pada sama ada nama itu wujud atau tidak. Walau bagaimanapun, saya telah terjebak untuk mendapatkan apa-apa selain daripada "tiada" dari perpustakaan.
Kod pengawal golang adalah seperti berikut:
func (c *certificatescontroller) post() { c.tplname = "certificates.html" flash := beego.newflash() cparams := newcertparams{} if err := c.parseform(&cparams); err != nil { beego.error(err) flash.error(err.error()) flash.store(&c.controller) } else { if vmap := validatecertparams(cparams); vmap != nil { c.data["validation"] = vmap } else { if err := lib.createcertificate(cparams.name, cparams.passphrase); err != nil { beego.error(err) flash.error(err.error()) flash.store(&c.controller) } else { fmt.println(err) flash.success("certificate for the name \"" + cparams.name + "\" created") flash.store(&c.controller) } } } c.showcerts() }
Dan fungsi perpustakaan dipanggil melalui lib.createcertificate:
func CreateCertificate(name string, passphrase string) error { rsaPath := models.GlobalCfg.OVConfigPath + "easy-rsa" rsaIndex := models.GlobalCfg.OVConfigPath + "easy-rsa/pki/index.txt" pass := false if passphrase != "" { pass = true } certs, err := ReadCerts(rsaIndex) if err != nil { // beego.Debug(string(output)) beego.Error(err) // return err } Dump(certs) exists := false for _, v := range certs { if v.Details.Name == name { exists = true } } if !exists && !pass { cmd := exec.Command("/bin/bash", "-c", fmt.Sprintf( "%s/easyrsa --batch build-client-full %s nopass", rsaPath, name)) cmd.Dir = models.GlobalCfg.OVConfigPath output, err := cmd.CombinedOutput() if err != nil { beego.Debug(string(output)) beego.Error(err) return err } return nil } if !exists && pass { cmd := exec.Command("/bin/bash", "-c", fmt.Sprintf( "%s/easyrsa --passout=pass:%s build-client-full %s", rsaPath, passphrase, name)) cmd.Dir = models.GlobalCfg.OVConfigPath output, err := cmd.CombinedOutput() if err != nil { beego.Debug(string(output)) beego.Error(err) return err } return nil } if exists { return err } return err }
Saya telah menukar setiap pemulangan dalam perpustakaan kepada ralat dan memasukkan fmt.println(err) dalam pernyataan "lain" kedua pengawal, tetapi yang saya dapat hanyalah sifar.
Penyelesaian
Jadi, saya dapat memikirkan cara untuk menangani masalah ini. Sedikit lagi Googling dan saya menemui siaran yang sekurang-kurangnya bersebelahan dengan perkara yang saya cuba capai. Akhirnya, saya hanya perlu menambah/menukar 3 baris di kedai sijil saya. Saya perlu mengimport perpustakaan "ralat" ke newerror :=errors.new("error! there is already a valid or invalidcertificate for that name")
的形式添加自定义错误,并仅更改最后一个返回 return newerror
. Saya memang belajar satu atau dua perkara tentang cara go menangani ralat!
Berikut ialah kod yang dikemas kini untuk kedai sijil:
func CreateCertificate(name string, passphrase string) error { rsaPath := models.GlobalCfg.OVConfigPath + "easy-rsa" rsaIndex := models.GlobalCfg.OVConfigPath + "easy-rsa/pki/index.txt" pass := false newError := errors.New("Error! There is already a valid or invalid certificate for that name") if passphrase != "" { pass = true } certs, err := ReadCerts(rsaIndex) if err != nil { // beego.Debug(string(output)) beego.Error(err) // return err } Dump(certs) exists := false for _, v := range certs { if v.Details.Name == name { exists = true } } if !exists && !pass { cmd := exec.Command("/bin/bash", "-c", fmt.Sprintf( "%s/easyrsa --batch build-client-full %s nopass", rsaPath, name)) cmd.Dir = models.GlobalCfg.OVConfigPath output, err := cmd.CombinedOutput() if err != nil { beego.Debug(string(output)) beego.Error(err) return err } return nil } if !exists && pass { cmd := exec.Command("/bin/bash", "-c", fmt.Sprintf( "%s/easyrsa --passout=pass:%s build-client-full %s", rsaPath, passphrase, name)) cmd.Dir = models.GlobalCfg.OVConfigPath output, err := cmd.CombinedOutput() if err != nil { beego.Debug(string(output)) beego.Error(err) return err } return nil } return newError }
Sekarang jika saya cuba menambah klien openvpn dengan nama yang sudah ada:
Atas ialah kandungan terperinci Tidak boleh mendapatkan pustaka Golang untuk mengembalikan apa-apa selain nil kepada pengawal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cabaran keselamatan dalam pembangunan Golang: Bagaimana untuk mengelak daripada dieksploitasi untuk penciptaan virus? Dengan aplikasi Golang yang luas dalam bidang pengaturcaraan, semakin ramai pembangun memilih untuk menggunakan Golang untuk membangunkan pelbagai jenis aplikasi. Walau bagaimanapun, seperti bahasa pengaturcaraan lain, terdapat cabaran keselamatan dalam pembangunan Golang. Khususnya, kuasa dan fleksibiliti Golang juga menjadikannya alat penciptaan virus yang berpotensi. Artikel ini akan membincangkan isu keselamatan dalam pembangunan Golang dan menyediakan beberapa kaedah untuk mengelakkan G

Gunakan Golang untuk membangunkan aplikasi desktop yang berkuasa Dengan pembangunan Internet yang berterusan, orang ramai menjadi tidak dapat dipisahkan daripada pelbagai jenis aplikasi desktop. Bagi pembangun, adalah penting untuk menggunakan bahasa pengaturcaraan yang cekap untuk membangunkan aplikasi desktop yang berkuasa. Artikel ini akan memperkenalkan cara menggunakan Golang (bahasa Go) untuk membangunkan aplikasi desktop yang berkuasa dan menyediakan beberapa contoh kod khusus. Golang ialah bahasa pengaturcaraan sumber terbuka yang dibangunkan oleh Google Ia mempunyai ciri-ciri kesederhanaan, kecekapan, konkurensi yang kuat, dsb., dan sangat sesuai untuk

Tajuk: Langkah dan teknik untuk menggunakan pengaturcaraan Golang pada Mac Dalam bidang pembangunan perisian semasa, Golang (juga dikenali sebagai Go), sebagai bahasa pengaturcaraan yang cekap, ringkas dan sangat bersesuaian, telah menarik perhatian lebih ramai pembangun . Apabila memprogramkan Golang pada platform Mac, anda boleh menggunakan beberapa alat dan teknik untuk meningkatkan kecekapan pembangunan. Artikel ini akan memperkenalkan langkah dan teknik menggunakan pengaturcaraan Golang pada Mac dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menggunakan dengan lebih baik. Langkah 1: Pasang Gol

Golang ialah bahasa pengaturcaraan sumber terbuka yang dibangunkan oleh Google dan digunakan secara meluas dalam pembangunan perkhidmatan bahagian belakang, pengkomputeran awan, pengaturcaraan rangkaian dan bidang lain. Sebagai bahasa yang ditaip secara statik, Golang mempunyai model konkurensi yang cekap dan perpustakaan standard yang berkuasa, jadi ia digemari oleh pembangun. Walau bagaimanapun, dalam pembangunan sebenar, pemaju Golang biasanya perlu menggabungkan bahasa pengaturcaraan lain untuk pembangunan projek untuk memenuhi keperluan senario yang berbeza. PythonPython ialah bahasa pengaturcaraan berorientasikan objek yang ringkas, jelas dan mudah dipelajari.

Gokit ialah rangka kerja mikro perkhidmatan Golang yang meningkatkan prestasi API melalui ciri yang dioptimumkan, berskala, boleh diselenggara dan mesra ujian. Ia menyediakan pelbagai alat dan corak yang membolehkan pengguna membina API yang berprestasi dan boleh diselenggara dengan cepat. Dalam pengeluaran sebenar, ia digunakan secara meluas dalam pembinaan API platform besar seperti Netflix, Spotify dan Uber, mengendalikan permintaan besar-besaran.

Golang (pendek kata bahasa Go) sebagai bahasa pengaturcaraan telah muncul secara beransur-ansur dalam bidang blockchain sejak beberapa tahun kebelakangan ini, keupayaan pemprosesan serentak yang cekap dan ciri sintaks yang ringkas menjadikannya pilihan yang digemari dalam pembangunan blok. Artikel ini akan meneroka bagaimana Golang membantu pembangunan blockchain dan menunjukkan keunggulannya dalam aplikasi blockchain melalui contoh kod tertentu. 1. Kelebihan Golang dalam bidang blockchain: Keupayaan pemprosesan serentak yang cekap: Nod dalam sistem blockchain perlu memproses sejumlah besar transaksi dan data pada masa yang sama, dan Gola

Kelebihan dan Kelemahan Menggunakan Golang untuk Membangunkan Permainan Mudah Alih Dengan populariti peranti mudah alih dan peningkatan berterusan prestasi mereka, pasaran permainan mudah alih menjadi semakin popular, menarik lebih ramai pembangun untuk menyertainya. Apabila memilih bahasa pembangunan, Golang, sebagai bahasa yang pantas, cekap dan mudah dipelajari, menarik perhatian ramai pembangun. Artikel ini akan membincangkan kelebihan dan kekurangan menggunakan Golang untuk membangunkan permainan mudah alih, dan menggambarkannya melalui contoh kod khusus. Kelebihan: Cross-platform yang kuat: Golang boleh disusun menjadi binari untuk platform yang berbeza

Tajuk: Analisis Kebolehlaksanaan Menggunakan Golang untuk Membangunkan Projek U3D Dengan pembangunan berterusan industri pembangunan permainan, Unity3D (pendek kata U3D), sebagai enjin permainan yang digunakan secara meluas, menyediakan alat dan sokongan yang berkuasa kepada pembangun. Dalam aplikasi sebenar, pembangun juga berminat untuk menggunakan bahasa pengaturcaraan lain untuk membangunkan projek U3D. Artikel ini akan menganalisis kebolehlaksanaan menggunakan Golang untuk membangunkan projek U3D dan menyediakan beberapa contoh kod khusus. 1. Gabungan Golang dan U3D Go
