Ist es sicher, die Referenz beizubehalten, die Daten jedoch nicht der tatsächlichen Variablen zuzuweisen?

PHPz
Freigeben: 2024-02-08 21:42:09
nach vorne
883 Leute haben es durchsucht

Ist es sicher, die Referenz beizubehalten, die Daten jedoch nicht der tatsächlichen Variablen zuzuweisen?

php Editor Banana Wenn wir diskutieren, ob es sicher ist, Referenzen beizubehalten, aber keine Daten tatsächlichen Variablen zuzuweisen, müssen wir verstehen, wie Referenzen und Variablenzuweisungen funktionieren. In PHP ist eine Referenz ein Alias, der auf die Speicheradresse einer Variablen verweist, die sich denselben Speicherplatz teilt. Wenn wir eine Referenz beibehalten, die Daten aber keiner tatsächlichen Variablen zuweisen, erstellen wir tatsächlich eine Referenz auf einen Raum und nicht auf konkrete Daten. Dieser Ansatz ist in manchen Situationen sicher, es gibt jedoch einige Einschränkungen.

Frageninhalt

Ich möchte eine Referenzliste in einem Slice führen, kann aber keine Online-Ressourcen finden, die erklären, ob es sicher ist, eine Referenz zu behalten, ohne sie einer Variablen zuzuweisen.

Ich meine, ist es möglich, dass das Betriebssystem etwas in die referenzierte Adresse schreibt, was der Programmierer nicht erwartet hat?

Hier ist ein Beispielcode:

type ListItem [8]uint64

list := make([]*ListItem, 0)

list = append(list, &ListChunk{})
list = append(list, &ListChunk{})
list = append(list, &ListChunk{})
Nach dem Login kopieren

Mit anderen Worten: Ist garantiert, dass die Elemente in einem Slice mit dem Namen list während der Ausführung des Programms gleich bleiben, egal wie lange es dauert?

Workaround

Wahrscheinlich nicht in Ihrem Fall (die Referenz bleibt gleich), aber es hängt auch davon ab, was Ihr Programm damit macht:

Die Go-Laufzeit ändert die im Slice gespeicherten Referenzen (Zeiger) während der Lebensdauer des Programms nicht, es gibt jedoch eine Bedingung: -Sie weisen das Slice oder seine Elementzeiger (Array von [8]uint64) in der Funktion nicht neu zu. Solange Sie den Elementen des Slice keinen neuen Wert zuweisen, bleibt die Referenz unverändert.

Das obige ist der detaillierte Inhalt vonIst es sicher, die Referenz beizubehalten, die Daten jedoch nicht der tatsächlichen Variablen zuzuweisen?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!