目次
Golang インターフェイス: 整数から「Bad Error」への変換を理解する
ホームページ バックエンド開発 Golang Go で整数がエラー インターフェイスを実装すると、fmt.Println が 5 ではなく「悪いエラー」を出力するのはなぜですか?

Go で整数がエラー インターフェイスを実装すると、fmt.Println が 5 ではなく「悪いエラー」を出力するのはなぜですか?

Dec 04, 2024 am 02:47 AM

Why Does fmt.Println Print

Golang インターフェイス: 整数から「Bad Error」への変換を理解する

Golang でインターフェイスを操作する場合、そのインターフェイスを実装する型の動作を理解することが不可欠です。 Error() メソッド。指定されたコード スニペットに例示されているように:

type T int

func (t T) Error() string {
    return "bad error"
}

func main() {
    var v interface{} = T(5)
    fmt.Println(v) //output: bad error, not 5
}

その目的は、型 T の Error() メソッドを定義し、値 5 を出力することを期待することです。しかし、出力には驚くべきことに「不正なエラー」が表示されます。この現象を明確にするには、fmt パッケージのドキュメントを詳しく調べる必要があります。

「オペランドがエラー インターフェイスを実装している場合、Error メソッドが呼び出されてオブジェクトを文字列に変換し、その後フォーマットされます」 (存在する場合) 動詞で要求されるとおりです。"

さらに、"Printf のような関数ごとに、形式をとらない Print 関数もあります。すべてのオペランドに対して %v を使用します。別の変種 Println は、オペランドの間に空白を挿入し、改行を追加します。"

この場合、Println() は形式を指定せずに使用されます。これは、%v を使用するのと同じです。 T はエラー インターフェイスを実装しているため、Error() メソッドが呼び出され、値が「不良エラー」に変換され、その後出力されます。

整数値を出力するには、特定の形式指定子を利用する必要があります。例:

fmt.Printf("%d", v) // Will print the integer value

以上がGo で整数がエラー インターフェイスを実装すると、fmt.Println が 5 ではなく「悪いエラー」を出力するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

Clothoff.io

Clothoff.io

AI衣類リムーバー

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golangの環境変数をどのように操作しますか? Golangの環境変数をどのように操作しますか? Aug 19, 2025 pm 02:06 PM

goprovides-built-built-insupportfor handlingenvironmentvariablesviatheospackage、developerstoread、set、andmanageenvironmentdatasecurelylelyandyly.toreadavariable、useos.getenv( "key")、whoreturnsenemptringtringifthesnoteset、lo

Goでパッケージとインポートを管理する方法は? Goでパッケージとインポートを管理する方法は? Sep 01, 2025 am 02:10 AM

usegomodulesbyrunninggomodinittucreateago.modfile、whithmanages -dependenciesandions.2.organizecodeIntopackagesは、Eachdirectoryisapackage where onsistentpackageName、できれば誘惑を抑制することができます

GOでジェネリックLRUキャッシュを実装する方法 GOでジェネリックLRUキャッシュを実装する方法 Aug 18, 2025 am 08:31 AM

Go GenericsとContainer/Listを使用して、スレッドセーフLRUキャッシュを実現します。 2。コアコンポーネントには、マップ、双方向リンクリスト、ミューテックスロックが含まれます。 3.操作を取得して追加し、O(1)の時間の複雑さを伴うロックを介して同時実行セキュリティを確保します。 4.キャッシュがいっぱいになると、最長の未使用のエントリが自動的に排除されます。 5。例では、容量が3のキャッシュが最も長く使用されていない「B」を正常に排除しました。この実装は、一般的で効率的でスケーラブルなものを完全にサポートします。

GOでカスタムエラータイプを作成および使用する方法 GOでカスタムエラータイプを作成および使用する方法 Aug 11, 2025 pm 11:08 PM

GOでは、カスタムエラータイプを作成して使用すると、エラー処理の表現力とデブガブルが向上します。答えは、エラー()メソッドを実装する構造を定義することにより、カスタムエラーを作成することです。たとえば、ValidationErrorにはフィールドとメッセージフィールドが含まれ、フォーマットされたエラー情報を返します。次に、関数でエラーを返すことができ、異なるロジックを実行するために、タイプアサーションまたはエラーを使用して特定のエラータイプを検出できます。また、構造化されたデータ、差別化処理、ライブラリエクスポート、またはAPI統合を必要とするシナリオに適したカスタムエラーに適したカスタムエラーなどの行動方法を追加することもできます。単純な場合、error.new、およびerrnotfoundなどの事前定義されたエラーを使用して、比較可能にすることができます

GOアプリケーションで信号をどのように処理しますか? GOアプリケーションで信号をどのように処理しますか? Aug 11, 2025 pm 08:01 PM

GOアプリケーションで信号を処理する正しい方法は、OS/信号パッケージを使用して信号を監視し、エレガントなシャットダウンを実行することです。 1.信号を使用して、sigint、sigterm、その他の信号をチャネルに送信します。 2。ゴルチンでメインサービスを実行し、待機信号をブロックします。 3.信号を受信した後、Context.WithTimeOutを介してタイムアウトを使用してエレガントなシャットダウンを実行します。 4.データベース接続の閉鎖やバックグラウンドゴルウチンの停止などのリソースをクリーンアップします。 5.信号を使用して、必要に応じてデフォルトの信号動作を復元して、プログラムをKubernetesおよびその他の環境で確実に終了できることを確認します。

GOでカスタムビルドタグを作成する方法 GOでカスタムビルドタグを作成する方法 Aug 27, 2025 am 04:37 AM

custombuildtagsingoallowconditionalcompalilation basedoneNvironment、Architecture、orcustomscenariosbyusing // go:buildtagsattheTopoffiles、burtientenabledviagobuild-tags "tagname"、supportinglogicaloperatorslike && |

ゴーアウチンでパニックを処理する方法 ゴーアウチンでパニックを処理する方法 Aug 24, 2025 am 01:55 AM

TohandlepanicsingOroutines、使用済みのinsidetegoroutinetocatchandmanagetheThemlocally.2.を使用している

IEEEの負のゼロの識別と処理go言語の浮動小数点数 IEEEの負のゼロの識別と処理go言語の浮動小数点数 Aug 11, 2025 pm 05:06 PM

この記事では、GOのIEEE 754標準フローティングポイント数で正のゼロ(0)と負のゼロ(-0)を区別する方法を詳細に説明します。数学パッケージのSignbit関数を分析し、実際のコードの例を組み合わせることにより、負のゼロを識別する正しい方法について詳しく説明します。この記事の目的は、開発者がフローティングポイントゼロ値の特性を理解し、GO言語でこれらの特別な値を正確に処理する手法をマスターし、シリアル化または特定のコンピューティングシナリオにおける象徴的な情報の整合性を確保することを目的としています。

See all articles