ホームページ >バックエンド開発 >Golang >Golang ライブラリが nil 以外のものをコントローラーに返すようにすることができません

Golang ライブラリが nil 以外のものをコントローラーに返すようにすることができません

王林
王林転載
2024-02-11 15:45:09756ブラウズ

无法让 Golang 库向控制器返回除 nil 之外的任何内容

php エディタ Baicao は、Golang ライブラリがコントローラに nil 以外のものを返せないという問題を紹介します。 Golang 開発では、コントローラーはリクエストを処理するための重要なコンポーネントですが、場合によっては nil 以外のコンテンツを返せないという問題に遭遇することがあります。これにより、一部の機能が正しく動作しなくなる可能性があります。幸いなことに、この問題を解決し、ライブラリが必要なものを確実に返すために実行できる解決策がいくつかあります。この記事では、この問題の解決に役立ついくつかの一般的な解決策について説明します。

質問の内容

これは golang の子供なので、明らかな何かが欠けていると思います。数日間試した後、助けを求めることにしました。 :-)

私が投稿したコードは、ユーザーが新しいクライアント証明書/キーバッグ (これは openvpn サーバー管理 webui) の作成を要求し、同じ名前のクライアントがすでに存在する場合を除いて機能します。この場合でも、新しいクライアント パッケージは作成されませんが、新しいクライアント パッケージが作成されたことを示す誤った警告メッセージが表示されます。

名前が存在するかどうかに応じて異なるアラート バナーを表示するには、コントローラーを再設計する必要があることはわかっています。しかし、私はライブラリから「nil」以外のものを取得することに行き詰まっています。

Golang コントローラーのコードは次のとおりです:

リーリー

および lib.createcertificate を通じて呼び出されるライブラリ関数:

リーリー

ライブラリ内のすべての return を err に変更し、コントローラーの 2 番目の "else" ステートメントに fmt.println(err) を挿入しましたが、得られるのは nil だけです。

解決策

ということで、この問題に対処する方法を見つけることができました。もう少しグーグル検索すると、少なくとも私が達成しようとしていたことに隣接する投稿を見つけました。最終的に、証明書ストアに 3 行を追加/変更するだけで済みました。 「errors」ライブラリをインポートし、カスタム エラーを newerror :=errors.new("error! there is selected a valid or validcertificate for that name") の形式で追加し、最後の部分のみを変更する必要があります。 1 つは return newerror を返しました。 go がエラーを処理する方法について 1 つまたは 2 つ学びました。

以下は証明書ストアの更新コードです:

リーリー

ここで、名前がすでに存在する openvpn クライアントを追加しようとすると:

以上がGolang ライブラリが nil 以外のものをコントローラーに返すようにすることができませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。