Hinweis zu Zeigern (Go)

Ich wusste nicht, was der Zeiger war, also habe ich ihn nachgeschlagen. Diesmal habe ich es in Go geschrieben.

pointer_practice.go


package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {

	x := 2
	/*Adresse der Variablen x(Der Speicherort des Speichers, in dem die Variable x gespeichert ist)Geschäft*/
	/*Eine Variable, die die Adresse einer bestimmten Variablen speichert, wird als Zeigervariable bezeichnet.*/
	x_pointer := &x

	fmt.Println(x)
	fmt.Println(x_pointer)
	/*Zeigervariable x_Ruft den Wert ab, der an der im Zeiger gespeicherten Adresse vorhanden ist*/
	/*Wenn Sie sich Speicher als js-Objekt und Adresse als Objektschlüssel vorstellen, Speicher[Adresse(x_pointer)] =Bild von 2*/
	fmt.Println(*x_pointer)

	arg := 0
	arg_pointer := &arg

	test_pointer(arg_pointer)
	/*Gleiches Ergebnis*/
	fmt.Println(arg)
	fmt.Println(*arg_pointer)

	/*Wert kann nicht umgeschrieben werden(Es kann in der Funktion neu geschrieben werden, hat jedoch keinen Einfluss auf den Wert der als Argument festgelegten Variablen.) */
    /*Holen Sie sich das Umschreibergebnis in der Funktion mit return*/
	test_val(arg)
	fmt.Println(arg)

}

/*Eine Funktion, die eine Zeigervariable als Argument verwendet(Einen Zeiger übergeben) */
func test_pointer(val_pointer *int) {

	/*Samen mit der Zeit(Quelle von Zufallszahlen?)Erhalten Sie jedes Mal den gleichen Wert ohne Seed*/
	rand.Seed(time.Now().UnixNano())
	/*Ruft die in der Zeigervariable gespeicherte Adresse ab->Geben Sie den Speicherort des Speichers an, um den Wert nach Adresse neu zu schreiben->0 der im angegebenen Speicherort gespeicherte Wert~Schreiben Sie auf eine Zufallszahl von 999 um*/
	*val_pointer = rand.Intn(1000)

}

/*By-Value-Funktion(Das Übliche) */
func test_val(val int) {

	rand.Seed(time.Now().UnixNano())
	val = rand.Intn(1000)

}

Die Methode zum Festlegen des Argumenttyps unterscheidet sich zwischen der Funktion, die als Wert übergeben wird (den Wert der Variablen empfängt), und der Funktion, die als Zeiger übergeben wird (die Adresse der Variablen empfängt).

/*By-Value-Funktion*/
func(Argument Argumenttyp) { /*Funktionsverarbeitung*/ }
/*Bevor der vom Zeiger übergebene Funktionstypname "*Es ist angehängt*/
func(Streit*Argumenttyp) { /*Funktionsverarbeitung*/ }

Recommended Posts

Hinweis zu Zeigern (Go)
Über Go-Funktionen
Hinweis zu awk
Über Go Interface
Erfahren Sie mehr über Go Slices
GO Offizielles Tutorial Hinweis 1
Informationen zur Go-Steuerungssyntax
Ein Hinweis zu __call__
Ein Hinweis zum Unterprozess
Über Go-Module (vgo)
Ein Hinweis zu mprotect (2)
Ein Hinweis zu KornShell (ksh)
[Golang] Über den Sprachkanal Go
Ein Hinweis zur TensorFlow-Einführung
Ein Hinweis zu [Python] __debug__
Memo
Python Hinweis: Über den Vergleich mit is
Python: Ein Hinweis zu Klasse 1 "Abstract"
Hinweis zu get_scorer von sklearn
Memo
Über den Grundtyp von Go
Memo
Ein Hinweis zu Mock (Python-Mock-Bibliothek)
[Übersetzung] Ein Memo über strukturierte Parallelverarbeitung. Oder besser gesagt, die go-Anweisung scheint schädlich zu sein
[Golang] Über Go-Sprache Produzent und Konsument
Ein Memo, dass ich das Pyramid Tutorial ausprobiert habe