Kích thước của một biến có thể được xác định bằng cách sử dụng unsafe.Sizeof(a)
. Kết quả sẽ vẫn giữ nguyên cho một loại nhất định (ví dụ: int
, int64
, string
, struct
v.v.), bất kể giá trị nó nắm giữ. Tuy nhiên, đối với loại string
, bạn có thể quan tâm đến kích thước của chuỗi mà biến tham chiếu và điều này được xác định bằng cách sử dụng hàm len(a)
trên một chuỗi nhất định. Đoạn dưới đây minh họa rằng kích thước của một biến kiểu chuỗi luôn luôn là 8 nhưng chiều dài của một chuỗi một biến tài liệu tham khảo có thể thay đổi:
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))
}
Output:
s1 size: string, 8
s2 size: string, 8
s1 len: string, 3
s2 len: string, 6
Phần cuối của câu hỏi của bạn là về việc chỉ định độ dài (ví dụ: giá trị int
) cho một số string
. Điều này có thể được thực hiện bởi s := strconv.Itoa(i)
trong đó i
là một biến số int
và string
được trả về bởi hàm được gán cho s
.
Lưu ý: tên của hàm chuyển đổi là Itoa
, có thể là dạng viết tắt của Integer to ASCII. Hầu hết các lập trình viên Golang có khả năng đọc sai tên hàm là Iota
.
Nguồn
2014-11-19 04:41:53
Điều gì cho biết kích thước? Byte? –
@TimurFayzrakhmanov: Có: "Sizeof trả về kích thước theo byte bị chiếm bởi giá trị v.". –
Vui lòng thêm câu trả lời của bạn vào phần bổ sung này: 'reflect.TypeOf (variable) .Size()'. Nó cho cùng một giá trị. –