Usare i puntatori nelle funzioni
Fa parte della sezione Fondamenti del percorso GO di Coddy. Lezione 64 di 109.
Le funzioni possono accettare e modificare le variabili tramite i puntatori. Questo consente alle funzioni di modificare il valore originale, non solo una copia.
Crea una funzione che modifica un valore tramite un puntatore:
func main() {
number := 10
fmt.Println("Before:", number)
// Pasa la dirección de number
doubleValue(&number)
fmt.Println("After:", number)
}
func doubleValue(num *int) {
// Modifica el valor en la dirección del puntero
*num = *num * 2
}L'output mostra il valore modificato dalla funzione:
Before: 10
After: 20Quando passiamo &number, la funzione riceve un puntatore e può modificare la variabile originale.
Sfida
PrincipianteIn questa sfida, ti eserciterai a usare i puntatori nelle funzioni. Devi completare una funzione che accetta un puntatore a una stringa e modifica il valore della stringa rendendolo maiuscolo.
La funzione makeUppercase è già definita. Il tuo compito è modificare la stringa a cui punta il puntatore usando la funzione strings.ToUpper().
Provalo tu
package main
import (
"fmt"
"strings"
)
// makeUppercase riceve un puntatore a una stringa e la converte in maiuscolo
func makeUppercase(strPtr *string) {
// TODO: Usa strings.ToUpper() per modificare la stringa a cui punta strPtr
// Suggerimento: devi dereferenziare il puntatore per accedere al valore della stringa
? = strings.ToUpper(?)
}
func main() {
// Abbiamo già una variabile stringa
message := "hello, world"
// Stampa il messaggio originale
fmt.Printf("Original message: %s\n", message)
// Chiama makeUppercase con l'indirizzo di message
makeUppercase(&message)
// Stampa il messaggio modificato
fmt.Printf("Modified message: %s\n", message)
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori di confronto e logici
Operatori di confronto - Parte 1Operatori di confronto - Parte 2Operatore AND logicoOperatore OR logicoOperatore NOT logicoNozioni di base sulla precedenza degli operatoriRiepilogo - Eseguire confronti7Flusso di controllo: cicli
Come funziona il ciclo `for`Ciclo `for` - baseCiclo `for` - solo condizioneLa parola chiave `break`La parola chiave `continue`Cicli annidatiRiepilogo - ripetere le azioni2Variabili e tipi di dati di base
Che cos'è una variabileInferenza del tipo con `:=`Numeri interi (int)Numeri in virgola mobileValori booleaniStringheValori zeroCostantiConvenzioni di denominazioneRiepilogo: variabili e tipi5Input/output di base
Output formattatoVerbi di formattazioneVisualizzazione dei tipiAcquisire input di base dall’utenteRiepilogo - Input e output8Funzioni
Capire le funzioniDichiarare una funzioneChiamare le funzioniParametri delle funzioniRestituire un singolo valoreRestituire più valoriValori restituiti con nomeFondamenti dell'ambito delle funzioniRiepilogo - Creare codice riutilizzabile3Operatori di base
Operatori aritmeticiOperatore di divisioneL'operatore moduloOperatore di assegnazioneOperatori di assegnazione compostaIncremento e decrementoRiepilogo - Calcoli6Flusso di controllo: condizioni
L'istruzione `if`La parola chiave `else`La parola chiave `else if`Ombreggiamento delle variabili in `if`Inizializzare le variabiliL'istruzione `switch``switch` con espressioni`switch` senza espressioneLa parola chiave `fallthrough`Riepilogo: prendere decisioni9Puntatori
Che cos’è un puntatore?Dichiarare variabili puntatoreL’operatore indirizzoDereferenziare i puntatoriUsare i puntatori nelle funzioniPuntatori nilRipasso - Capire i puntatori12Tipi compositi: mappe
Introduzione alle mappeDichiarare i letterali delle mappeCreare mappe con `make`Aggiungere e aggiornare coppie chiave-valoreAccedere ai valori delle mappeVerificare l'esistenza di una chiaveEliminare elementi dalle mappeLunghezza delle mappeIterare sulle mappeRiepilogo - Archiviazione chiave-valoreEsercitati da solo: Compilatore Go online