Variabili
Le variabili sono dichiarate esplicitamente con la parola chiave var
indicandone a seguire il nome poi il tipo.
Per esempio:
(030variables.go):
package main
import "fmt"
func main() {
// Dichiarazione di variabile
// Il tipo è dopo il nome
var a string = "initial"
fmt.Println(a)
// Dichiarazione e assegnazione di più variabili
var b, c int = 1, 2
fmt.Println(b, c)
// Il tipo è dedotto dal valore assegnato
var d = true
fmt.Println(d)
// In asssenza di assegnazione la variabile
// vale lo zero del suo tipo
var e int
fmt.Println(e)
// Abbreviazione di dichiarazione e assegnazione
f := "short"
fmt.Println(f)
}
Le variabili possono essere inizializzate all'istante della dichiarazione, assegnandovi
un valore con l'operatore =
.
Le variabili non inizializzate hanno come valore lo zero del loro tipo, i.e.
0
, 0.0
, ""
, false
.
Si possono dichiarare più varibili in una sola dichiarazione, ed anche inizializzarle nell'ordine rispettivo.
Se vi è un'inizializzazione immediata, in molti casi Go può dedurre il tipo della variabile dal tipo della costante che le viene assegnata.
La parola var
può essere omessa se vi è un'inizializzazione immediata ad un tipo noto e si usa l'operatore :=
, di dichiarazione e inizializzazione. P.es.:
x := 5
saluto := "Ciao"
raggio := 3.89
condizione := true
è come:
var x int = 5
var saluto string = "Ciao"
var raggio float64 = 3.09
var condizione bool = true
Si può usare l'assegnazione e dichiarazione combinata :=
solo la prima volta. Tutte le volte seguenti è solo un'assegnazione con =
.
Per esempio il seguente codice è errato:
x := 3
.......
x := 5
Doveva essere:
x := 3
.......
x = 5
Una stringa è immutabile. Deve essere inizializzata al momento della dichiarazione e non può più essere assegnata. Non si può solo dichiarare una stringa come in:
string saluto
...
saluto = "Ciao"
Tipi delle Variabili
I tipi come al solito determinano lo storaggio in memoria e la rappresentazione.
Tipo | Storaggio |
---|---|
uint8 | 8-bit integers (0 to 255) |
uint16 | 16-bit integers (0 to 65535) |
uint32 | 32-bit integers (0 to 4294967295) |
uint64 | 64-bit integers (0 to 18446744073709551615) |
int8 | signed 8-bit integers (-128 to 127) |
int16 | signed 16-bit integers (-32768 to 32767) |
int32 | signed 32-bit integers (-2147483648 to 2147483647) |
int64 | signed 64-bit integers (-9223372036854775808 to 9223372036854775807) |
float32 | IEEE-754 32-bit floating-point numbers |
float64 | IEEE-754 64-bit floating-point numbers |
complex64 | complex numbers with float32 real and imaginary parts |
complex128 | complex numbers with float64 real and imaginary parts |
byte | alias for uint8 |
rune | alias for int32 |
bool | come uint8 (true oppure false ) |
string | allocazione a seconda della lunghezza della costante stringa assegnata |