Heim >Backend-Entwicklung >Golang >So erstellen Sie einen Wert aus einem Nullzeiger
Der PHP-Editor Youzi zeigt Ihnen, wie Sie aus einem Nullzeiger einen Wert erstellen. In der Programmierung ist ein Nullzeiger ein Zeiger, der auf keine gültige Speicheradresse zeigt. Normalerweise können wir aus einem Nullzeiger keinen Wert erstellen, da dieser auf keinen gültigen Speicherplatz zeigt. Einige Programmiersprachen bieten jedoch eine spezielle Handhabung, die es uns ermöglicht, Werte aus Nullzeigern zu erstellen. In diesem Artikel besprechen wir, wie man mit dieser besonderen Situation umgeht und wie man potenzielle Probleme und Fehler vermeidet. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, dieser Artikel bietet Ihnen hilfreiche Anleitungen und Ratschläge.
Berücksichtigen Sie in Go 1.19 die folgende Definition:
type A struct{} type B struct{} type Field interface { *A | *B } type Person[T Field] struct { field T }
Kann ich bei einer Null Field
den zugrunde liegenden Wert dynamisch erstellen?
func (p Person[T]) do() { if p.field == nil { // Can I make a value here that will be *A or *B dynamically depending on T? // Something that would be equivalent to new(A) or new(B) p.field = ? } }
func (p Person[T]) do() { if p.field == nil { // assuming T is a pointer type, e.g. *A pp := new(T) // initialize an instance of **A rt := reflect.TypeOf(pp) // get the reflect.Type representation of **A rt = rt.Elem() // get the reflect.Type representation of *A rt = rt.Elem() // get the reflect.Type representation of A rv := reflect.New(rt) // initialize reflect.Value representation of *A v := rv.Interface() // get the interface{}(*A) instance from reflect.Value t := v.(T) // type assert the interface's dynamic type p.field = t } }
https://www.php.cn/link/ccd2d123f4ec4d777fc6ef757d0fb642
Weitere Informationen finden Sie in der Dokumentation:
reflect.TypeOf
Rufen Sie die Typinformationen des angegebenen Werts abreflect.Type.Elem
Holen Sie sich den Elementtyp vom Typ
reflect.New
Gibt einen Zeiger auf einen Nullwert des angegebenen Typs zurück
reflect.Value.Interface
Rückgabewert als Schnittstelle{} v.(T)
TypzusicherungDas obige ist der detaillierte Inhalt vonSo erstellen Sie einen Wert aus einem Nullzeiger. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!