php エディター Zimo は、Sprintf 関数に関する質問に答えます。場合によっては、文字列をフォーマットするために Sprintf 関数を使用する必要がありますが、場合によっては、3 つの異なるポインター型のパラメーターがあり、これらのパラメーターが nil である状況に遭遇することがあります。この場合、三項演算子は使用できません。使用しないと、コードが冗長になり、読みにくくなります。では、何十行にも及ぶ長いコードの記述を避けるにはどうすればよいでしょうか?次に、簡単な解決策を紹介します。
この文字列を作成するためにsprintf
を使用したいのですが
エンティティでは、変数はポインタであり、nil
:
name
は *string
levelcode
には *levelcode
タイプカテゴリコード
には *カテゴリコード
タイプしかし、値がある場合は、ポインタではなく値が必要です。 (つまり、ユニット abc のレベルはゼロですが、管理ユニット カテゴリ に属します)
どの言語を使用しても、私は次のように書きます:
リーリーただし、go では三項演算子を使用できません。 nil 値を処理しない場合、sprintf
は例外をスローします。
それでは、このように始めなければなりませんか?
message := fmt.sprintf("unit %s has a level of %v, but is of category %v", *entity.name, *entity.levelcode, *entity.categorycode)
ありがとうございます。ご協力のおかげで、関数を正常に構築できました。
リーリーこのように呼ばれます
リーリー単一の sprintf
に対して 5 つのステートメントを記述します...しかし、それは機能します。
以上が異なるポインター型の 3 つの引数を持つ Sprintf (nil の可能性あり)。三項演算子は使用できません。数十行の記述を避けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。