Als ich Go studierte, entdeckte ich es wieder (oder überprüfte es eher) und stellte fest, dass die Grundlagen fehlten. Ich glaube, ich habe es gelernt, als ich C-Sprache gelernt habe, aber ich bin völlig verrückt, also werde ich es aufschreiben. In diesem Artikel werden C und Go als Beispiele verwendet.
Lassen Sie uns zunächst den Wert der Variablen normal an die Funktion übergeben.
#include<stdio.h>
int plus1(int x){
x = x + 1 ;
return x ;
}
int main(void){
int a ;
a = 1 ;
plus1(a);
printf("a = %d\n",a);//a =Wird als 1 angezeigt
return 0;
}
package main
import "fmt"
func plus1(x int) int{
x = x + 1
return x
}
func main(){
a := 1
a1 := plus1(a)
fmt.Println("a =", a) //a =Wird als 1 angezeigt
fmt.Println("a + 1 =", a1) //a + 1 =2 wird angezeigt
}
Als nächstes übergeben wir einen Zeiger.
#include<stdio.h>
int plus1(int *x){
*x = *x + 1 ;
return *x ;
}
int main(void){
int a ;
a = 1 ;
plus1(&a);
printf("a = %d\n",a);//a =2 wird angezeigt
return 0;
}
package main
import "fmt"
func plus1(x *int) int{
*x = *x + 1
return *x
}
func main(){
a := 1
a1 := plus1(&a)
fmt.Println("a =", a) //a =2 wird angezeigt
fmt.Println("a + 1 =", a1) //a + 1 =2 wird angezeigt
}
Das Ergebnis hat sich geändert.
Wenn Sie die Variable a
normal übergeben, wird der Funktion eine Kopie von a
übergeben. Die Änderungen werden also nicht auf das ursprüngliche "a" angewendet.
Wenn Sie den ~~ Zeiger übergeben, wird die Adresse, an der a
gespeichert ist, direkt geändert, also vom Vorgang des "Hinzufügens von 1 zu a" zu dem numerischen Wert in der Adresse, auf die ein "zeigt". Es wurde in den Prozess des "Hinzufügens von 1" geändert.
Am Ende geht der Wert der Variablen "a", die sich an derselben Stelle befindet, ebenfalls von 1 auf 2. ~~
Es ist natürlich für jemanden, der es kann, aber ich habe es bisher mehrdeutig gehalten, also habe ich diese Gelegenheit genutzt, um es zu überprüfen. Ich hoffe es hilft jemandem auch nur ein bisschen.
Recommended Posts