1. ホーム
  2. struct

[解決済み] 空の構造体をチェックする方法は?

2022-04-22 06:24:07

質問

構造体を定義する ...

type Session struct {
    playerId string
    beehive string
    timestamp time.Time
}

時々、空のセッションを代入しています(nilはありえないので)

session = Session{};

次に、それが空であるかどうかをチェックしたい。

if session == Session{} {
     // do stuff...
}

明らかにこれは動作していません。どう書けばいいのでしょうか?

どのように解決するのですか?

ゼロ値の複合リテラルとの比較には、すべてのフィールドが 比較可能 :

if (Session{}) == session  {
    fmt.Println("is zero value")
}

プレイグラウンド例

があるため パースのあいまいさ の場合、複合リテラルを括弧で囲む必要があります。

の使用は == は、構造体のすべてのフィールドが 比較可能 . 構造体に比較不可能なフィールド(スライス、マップ、関数)が含まれている場合、フィールドを1つずつゼロ値で比較する必要があります。

値全体を比較する代わりに、有効なセッションでゼロ以外の値を設定する必要があるフィールドを比較することもできます。たとえば、有効なセッションでプレーヤ ID が != "" でなければならない場合、以下を使用します。

if session.playerId == "" {
    fmt.Println("is zero value")
}