La dimensione di una variabile può essere determinata utilizzando unsafe.Sizeof(a)
. Il risultato rimarrà lo stesso per un dato tipo (ad esempio int
, int64
, string
, struct
ecc.), Indipendentemente dal valore che detiene. Tuttavia, per il tipo string
, potresti essere interessato alle dimensioni della stringa a cui fa riferimento la variabile e questo viene determinato utilizzando la funzione len(a)
su una stringa specifica. Il seguente frammento mostra che la dimensione di una variabile di tipo stringa è sempre 8, ma la lunghezza di una stringa che una variabile fa riferimento può variare:
package main
import "fmt"
import "unsafe"
func main() {
s1 := "foo"
s2 := "foobar"
fmt.Printf("s1 size: %T, %d\n", s1, unsafe.Sizeof(s1))
fmt.Printf("s2 size: %T, %d\n", s2, unsafe.Sizeof(s2))
fmt.Printf("s1 len: %T, %d\n", s1, len(s1))
fmt.Printf("s2 len: %T, %d\n", s2, len(s2))
}
uscita:
s1 size: string, 8
s2 size: string, 8
s1 len: string, 3
s2 len: string, 6
L'ultima parte della tua domanda riguarda l'assegnazione della lunghezza (ovvero un valore int
) a string
. Questo può essere fatto da s := strconv.Itoa(i)
dove i
è una variabile int
e il string
restituito dalla funzione viene assegnato a s
.
Nota: il nome della funzione convertitore è Itoa
, eventualmente un modulo breve per Intero in ASCII. La maggior parte dei programmatori di Golang probabilmente interpretano erroneamente il nome della funzione come Iota
.
fonte
2014-11-19 04:41:53
Cosa indica la dimensione? Byte? –
@TimurFayzrakhmanov: Sì: "Sizeof restituisce la dimensione in byte occupata dal valore v.". –
Per favore, aggiungi alla tua risposta questa aggiunta: 'reflect.TypeOf (variable) .Size()'. Dà gli stessi valori. –