


Die Golang-Bibliothek kann nicht dazu gebracht werden, etwas anderes als Null an den Controller zurückzugeben
php-Editor Baicao stellt Ihnen das Problem vor: Die Golang-Bibliothek kann nichts außer Null an den Controller zurückgeben. In der Golang-Entwicklung ist der Controller eine Schlüsselkomponente bei der Bearbeitung von Anfragen, aber manchmal kann es vorkommen, dass Sie keinen anderen Inhalt als Null zurückgeben können. Dies kann dazu führen, dass einige Funktionen nicht ordnungsgemäß funktionieren. Glücklicherweise gibt es einige Lösungen, mit denen wir dieses Problem lösen und sicherstellen können, dass die Bibliothek das zurückgibt, was sie benötigt. In diesem Artikel untersuchen wir einige gängige Lösungen, die Ihnen bei der Lösung dieses Problems helfen.
Frageninhalt
Ich bin hier ein Golang-Kind, also übersehe ich wohl etwas Offensichtliches. Nachdem ich es ein paar Tage lang versucht hatte, beschloss ich, mir Hilfe zu holen. :-)
Der von mir gepostete Code funktioniert, außer in dem Fall, in dem der Benutzer die Erstellung eines neuen Client-Zertifikats/Keybags anfordert (dies ist die WebUI für die OpenVPN-Serververwaltung) und bereits ein Client mit demselben Namen vorhanden ist. Auch in diesem Fall wird das neue Client-Paket nicht erstellt, sondern es wird eine fehlerhafte Warnmeldung angezeigt, die darauf hinweist, dass ein neues Client-Paket erstellt wurde.
Ich weiß, dass ich den Controller neu gestalten muss, um ein anderes Warnbanner anzuzeigen, je nachdem, ob der Name existiert oder nicht. Ich bin jedoch beim Abrufen von etwas anderem als „Null“ aus der Bibliothek steckengeblieben.
Der Golang-Controller-Code lautet wie folgt:
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() }
Und Bibliotheksfunktionen, die über lib.createcertificate aufgerufen werden:
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 }
Ich habe jede Rückgabe in der Bibliothek in err geändert und fmt.println(err) in die zweite „else“-Anweisung des Controllers eingefügt, aber alles, was ich bekomme, ist Null.
Lösung
So konnte ich herausfinden, wie ich mit diesem Problem umgehen kann. Noch ein bisschen googeln und ich fand einen Beitrag, der zumindest dem entsprach, was ich erreichen wollte. Am Ende musste ich in meinem Zertifikatsspeicher nur 3 Zeilen hinzufügen/ändern. Ich muss die „errors“-Bibliothek nach newerror :=errors.new("error! there is already a valid or invalidcertificate for that name")
的形式添加自定义错误,并仅更改最后一个返回 return newerror
importieren. Ich habe ein oder zwei Dinge darüber gelernt, wie Go mit Fehlern umgeht!
Das Folgende ist der aktualisierte Code für den Zertifikatsspeicher:
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 }
Wenn ich jetzt versuche, einen OpenVPN-Client mit dem bereits vorhandenen Namen hinzuzufügen:
Das obige ist der detaillierte Inhalt vonDie Golang-Bibliothek kann nicht dazu gebracht werden, etwas anderes als Null an den Controller zurückzugeben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Verwenden Sie Golang, um leistungsstarke Desktop-Anwendungen zu entwickeln. Mit der kontinuierlichen Entwicklung des Internets sind Menschen untrennbar mit verschiedenen Arten von Desktop-Anwendungen verbunden. Für Entwickler ist es von entscheidender Bedeutung, effiziente Programmiersprachen zu verwenden, um leistungsstarke Desktop-Anwendungen zu entwickeln. In diesem Artikel wird die Verwendung von Golang (Go-Sprache) zur Entwicklung leistungsstarker Desktop-Anwendungen vorgestellt und einige spezifische Codebeispiele bereitgestellt. Golang ist eine von Google entwickelte Open-Source-Programmiersprache. Sie zeichnet sich durch Einfachheit, Effizienz, starke Parallelität usw. aus und eignet sich sehr gut für

Sicherheitsherausforderungen bei der Golang-Entwicklung: Wie kann verhindert werden, dass es zur Virenentstehung ausgenutzt wird? Aufgrund der breiten Anwendung von Golang im Bereich der Programmierung entscheiden sich immer mehr Entwickler für die Verwendung von Golang zur Entwicklung verschiedener Arten von Anwendungen. Allerdings gibt es wie bei anderen Programmiersprachen auch bei der Golang-Entwicklung Sicherheitsherausforderungen. Insbesondere seine Leistungsfähigkeit und Flexibilität machen Golang auch zu einem potenziellen Werkzeug zur Virenerstellung. Dieser Artikel befasst sich mit Sicherheitsproblemen bei der Golang-Entwicklung und bietet einige Methoden zur Vermeidung von G

Titel: Schritte und Techniken zur Verwendung der Golang-Programmierung auf dem Mac Im aktuellen Bereich der Softwareentwicklung hat Golang (auch bekannt als Go) als effiziente, prägnante und hochgradig parallele Programmiersprache die Aufmerksamkeit immer mehr Entwickler auf sich gezogen . Beim Programmieren von Golang auf der Mac-Plattform können Sie einige Tools und Techniken verwenden, um die Entwicklungseffizienz zu verbessern. In diesem Artikel werden die Schritte und Techniken der Verwendung der Golang-Programmierung auf dem Mac vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern das Verständnis und die Anwendung zu erleichtern. Schritt 1: Gol installieren

Golang (kurz Go-Sprache) hat sich in den letzten Jahren im Blockchain-Bereich nach und nach durchgesetzt. Seine effizienten Fähigkeiten zur gleichzeitigen Verarbeitung und seine prägnanten Syntaxfunktionen machen es zu einer bevorzugten Wahl in der Blockchain-Entwicklung. In diesem Artikel wird untersucht, wie Golang die Entwicklung der Blockchain unterstützt und seine Überlegenheit in Blockchain-Anwendungen anhand spezifischer Codebeispiele demonstriert. 1. Vorteile von Golang im Blockchain-Bereich: Effiziente gleichzeitige Verarbeitungsfunktionen: Knoten im Blockchain-System müssen eine große Menge an Transaktionen und Daten gleichzeitig verarbeiten, und Gola

Golang ist eine von Google entwickelte Open-Source-Programmiersprache, die häufig in der Back-End-Dienstentwicklung, Cloud Computing, Netzwerkprogrammierung und anderen Bereichen eingesetzt wird. Als statisch typisierte Sprache verfügt Golang über ein effizientes Parallelitätsmodell und eine leistungsstarke Standardbibliothek und wird daher von Entwicklern bevorzugt. In der tatsächlichen Entwicklung müssen Golang-Entwickler jedoch normalerweise andere Programmiersprachen für die Projektentwicklung kombinieren, um den Anforderungen verschiedener Szenarien gerecht zu werden. PythonPython ist eine objektorientierte Programmiersprache, die prägnant, klar und leicht zu erlernen ist.

Gokit ist ein Golang-Microservice-Framework, das die API-Leistung durch optimierte, skalierbare, wartbare und testfreundliche Funktionen verbessert. Es bietet eine Reihe von Tools und Mustern, die es Benutzern ermöglichen, schnell leistungsstarke und wartbare APIs zu erstellen. In der tatsächlichen Produktion wird es häufig beim API-Aufbau großer Plattformen wie Netflix, Spotify und Uber eingesetzt und verarbeitet massive Anfragen.

Vor- und Nachteile der Verwendung von Golang zur Entwicklung mobiler Spiele Mit der Beliebtheit mobiler Geräte und der kontinuierlichen Verbesserung ihrer Leistung erfreut sich der Markt mobiler Spiele immer größerer Beliebtheit und lockt immer mehr Entwickler an. Bei der Auswahl einer Entwicklungssprache zieht Golang als schnelle, effiziente und leicht zu erlernende Sprache die Aufmerksamkeit vieler Entwickler auf sich. In diesem Artikel werden die Vor- und Nachteile der Verwendung von Golang zur Entwicklung mobiler Spiele erläutert und anhand spezifischer Codebeispiele veranschaulicht. Vorteile: Stark plattformübergreifend: Golang kann in Binärdateien für verschiedene Plattformen kompiliert werden

Titel: Austausch praktischer Techniken zum Ersetzen von Leerzeichen in Golang Mit der Popularität und Entwicklung des Internets sind Programmdesign und -entwicklung immer wichtiger geworden. Im Programmierprozess ist die Datenverarbeitung ein sehr kritischer Teil. Bei der Verarbeitung von Textdaten kommt es häufig vor, dass Leerzeichen ersetzt werden müssen. In diesem Artikel erfahren Sie, wie Sie die Technologie zum Ersetzen von Leerzeichen in Golang implementieren und stellen spezifische Codebeispiele bereit. Warum muss ich Leerzeichen ersetzen? Leerzeichen gehören zu den häufigsten Sonderzeichen in Textdaten. Manchmal müssen wir Leerzeichen durch andere Zeichen ersetzen oder Leerzeichen entfernen.
