变量的大小可以通过使用unsafe.Sizeof(a) 来确定。对于给定类型(即int、int64、string、struct 等),结果将保持不变,而与它所持有的值无关。但是,对于类型string,您可能对变量引用的字符串的大小感兴趣,这是通过对给定字符串使用len(a) 函数来确定的。下面的 sn-p 说明了 string 类型的变量的大小始终为 8,但变量引用的字符串的长度可以变化:
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))
}
输出:
s1 size: string, 8
s2 size: string, 8
s1 len: string, 3
s2 len: string, 6
您问题的最后一部分是关于将长度(即int 值)分配给string。这可以通过s := strconv.Itoa(i) 完成,其中i 是int 变量,函数返回的string 被分配给s。
注意:转换器函数的名称是Itoa,可能是整数到ASCII的缩写形式。大多数 Golang 程序员很可能将函数名误读为Iota。