Heim > Backend-Entwicklung > Golang > Legen Sie einen int64-Wert auf einen *int64-Zeiger fest

Legen Sie einen int64-Wert auf einen *int64-Zeiger fest

WBOY
Freigeben: 2024-02-10 09:06:22
nach vorne
611 Leute haben es durchsucht

将 int64 值设置为 *int64 指针

Der PHP-Editor Xigua ist hier, um Ihnen ein Problem beim Festlegen eines int64-Werts auf einen int64-Zeiger vorzustellen. Beim Programmieren müssen wir häufig Zeiger manipulieren, um den Wert von Variablen zu ändern. Für Variablen vom Typ int64 können wir ihre Werte ändern, indem wir sie auf int64-Zeiger setzen. Dieser Vorgang ist in bestimmten Situationen sehr nützlich und kann uns helfen, Daten flexibler zu verarbeiten. Als Nächstes analysieren wir dieses Problem im Detail und geben den entsprechenden Beispielcode an.

Frageninhalt

Ich benötige eine Zuordnungsstruktur, um eine JSON-Struktur zu erstellen. Das Attribut „collector_id“ in JSON sollte einen Nullwert oder einen Int-Wert annehmen können. Ich habe den folgenden Code:

type purchaseInfo struct {
    CollectorID *int64 `json:"collector_id"`
}

func mapPurchaseInfo(collectorID int64) purchaseInfo {
    var collectorIDToSend *int64
    if collectorID < 0 {
        collectorIDToSend = nil
    } else {
        collectorIDToSend = collectorID
    }

    return purchaseInfo{
        CollectorID: collectorIDToSend,
    }
}
Nach dem Login kopieren

Dieser Code wird nicht kompiliert und kann Collectorid nicht zu Collectoridtosend zuweisen. Gibt es eine Möglichkeit, dies zu tun?

Danke!

Lösung

  • Um in der Deklaration der Funktion „mappurchaseinfo“ den als Parameter übergebenen Wert „collectoridtosend“ korrekt zuzuweisen, muss der &-Operator verwendet werden, um die Speicheradresse der „collectorid“ abzurufen.
  • Beim Aufbau der Purchaseinfo-Rückgabevariablen können Sie diese direkt in die Felder der Struktur einfügen, wie im Beispiel gezeigt.
type purchaseInfo struct {
        CollectorID *int64 `json:"collector_id"`
    }

    func mapPurchaseInfo(collectorID int64) purchaseInfo {
        var collectorIDToSend *int64
        if collectorID < 0 {
            collectorIDToSend = nil
        } else {
            collectorIDToSend = &collectorID
        }

        return purchaseInfo{
            CollectorID: collectorIDToSend,
        }
    }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonLegen Sie einen int64-Wert auf einen *int64-Zeiger fest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage