Remarque sur les pointeurs (Go)

Je ne savais pas quel était le pointeur, alors je l'ai recherché. Cette fois, je l'ai écrit en Go.

pointer_practice.go


package main

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

func main() {

	x := 2
	/*Adresse de la variable x(L'emplacement de la mémoire où la variable x est stockée)Boutique*/
	/*Une variable qui stocke l'adresse d'une certaine variable est appelée une variable pointeur.*/
	x_pointer := &x

	fmt.Println(x)
	fmt.Println(x_pointer)
	/*Variable de pointeur x_Récupère la valeur qui existe à l'adresse stockée dans le pointeur*/
	/*Si vous considérez la mémoire comme un objet js et l'adresse comme une clé d'objet, la mémoire[adresse(x_pointer)] =Image de 2*/
	fmt.Println(*x_pointer)

	arg := 0
	arg_pointer := &arg

	test_pointer(arg_pointer)
	/*Même résultat*/
	fmt.Println(arg)
	fmt.Println(*arg_pointer)

	/*La valeur ne peut pas être réécrite(Il peut être réécrit dans la fonction, mais il n'affecte pas la valeur de la variable définie comme argument.) */
    /*Obtenez le résultat de la réécriture dans la fonction avec retour*/
	test_val(arg)
	fmt.Println(arg)

}

/*Une fonction qui prend une variable de pointeur comme argument(Passer un pointeur) */
func test_pointer(val_pointer *int) {

	/*Semer en utilisant le temps(Source de nombres aléatoires?)Obtenez la même valeur à chaque fois sans Seed*/
	rand.Seed(time.Now().UnixNano())
	/*Récupère l'adresse stockée dans la variable de pointeur->Spécifiez l'emplacement de la mémoire pour réécrire la valeur par adresse->0 la valeur stockée dans l'emplacement mémoire spécifié~Réécrire en un nombre aléatoire de 999*/
	*val_pointer = rand.Intn(1000)

}

/*Fonction par valeur(L'habituel) */
func test_val(val int) {

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

}

La méthode de définition du type d'argument diffère entre la fonction qui passe par valeur (reçoit la valeur de la variable) et la fonction qui passe par pointeur (reçoit l'adresse de la variable).

/*Fonction par valeur*/
func(Argument Type d'argument) { /*Traitement des fonctions*/ }
/*Avant le nom du type de fonction passé par le pointeur, "*Est attaché*/
func(argument*Type d'argument) { /*Traitement des fonctions*/ }

Recommended Posts

Remarque sur les pointeurs (Go)
À propos des fonctions Go
Remarque sur awk
À propos de l'interface Go
En savoir plus sur les tranches Go
GO Official Tutorial Note 1
À propos de la syntaxe de contrôle Go
Une note sur __call__
Une note sur le sous-processus
À propos des modules Go (vgo)
Une note sur mprotect (2)
Une note sur KornShell (ksh)
[Golang] À propos de la chaîne linguistique Go
Une note sur TensorFlow Introduction
Une note sur [python] __debug__
Note
Remarque Python: à propos de la comparaison en utilisant is
Python: une note sur les classes 1 "Résumé"
Remarque à propos de get_scorer de sklearn
Note
À propos du type de base de Go
Note
Une note sur mock (bibliothèque fictive Python)
[Français] Une note sur le traitement parallèle structuré. Ou plutôt, la déclaration go semble être nuisible
[Golang] À propos du producteur et consommateur de langue Go
Un mémo que j'ai essayé le tutoriel Pyramid