Đi tới các kiểu dữ liệu số nguyên
Đi tới các kiểu dữ liệu số nguyên
Kiểu dữ liệu số nguyên được sử dụng để lưu trữ số nguyên không có số thập phân, như 35, -50 hoặc 1345000.
Kiểu dữ liệu số nguyên có hai loại:
- Số nguyên có dấu - có thể lưu trữ cả giá trị dương và âm
- Số nguyên không dấu - chỉ có thể lưu trữ các giá trị không âm
Mẹo: Kiểu mặc định cho số nguyên là int
. Nếu bạn không chỉ định loại thì loại đó sẽ là int
.
Số nguyên có dấu
Số nguyên có dấu, được khai báo bằng một trong các từ khóa int
, có thể lưu trữ cả giá trị dương và âm:
Ví dụ
package main
import ("fmt")
func main() {
var x int = 500
var y int = -4500
fmt.Printf("Type: %T, value: %v", x, x)
fmt.Printf("Type: %T, value: %v",
y, y)
}
Hãy tự mình thử »Go có năm từ khóa/loại số nguyên có dấu:
Type | Size | Range |
---|---|---|
int |
Depends on platform: 32 bits in 32 bit systems and 64 bit in 64 bit systems |
-2147483648 to 2147483647 in 32 bit systems and -9223372036854775808 to 9223372036854775807 in 64 bit systems |
int8 |
8 bits/1 byte | -128 to 127 |
int16 |
16 bits/2 byte | -32768 to 32767 |
int32 |
32 bits/4 byte | -2147483648 to 2147483647 |
int64 |
64 bits/8 byte | -9223372036854775808 to 9223372036854775807 |
Số nguyên không dấu
Số nguyên không dấu, được khai báo bằng một trong các từ khóa uint
, chỉ có thể lưu trữ các giá trị không âm:
Ví dụ
package main
import ("fmt")
func main() {
var x uint = 500
var y uint = 4500
fmt.Printf("Type: %T, value: %v", x, x)
fmt.Printf("Type: %T, value: %v",
y, y)
}
Hãy tự mình thử »Go có năm từ khóa/loại số nguyên không dấu:
Type | Size | Range |
---|---|---|
uint |
Depends on platform: 32 bits in 32 bit systems and 64 bit in 64 bit systems |
0 to 4294967295 in 32 bit systems and 0 to 18446744073709551615 in 64 bit systems |
uint8 |
8 bits/1 byte | 0 to 255 |
uint16 |
16 bits/2 byte | 0 to 65535 |
uint32 |
32 bits/4 byte | 0 to 4294967295 |
uint64 |
64 bits/8 byte | 0 to 18446744073709551615 |
Nên sử dụng loại số nguyên nào?
Loại số nguyên cần chọn phụ thuộc vào giá trị mà biến phải lưu trữ.
Ví dụ
Ví dụ này sẽ gây ra lỗi vì 1000 nằm ngoài phạm vi của int8 (từ -128 đến 127):
package main
import ("fmt")
func main() {
var x int8 = 1000
fmt.Printf("Type: %T, value: %v", x, x)
}
Kết quả:
./prog.go:5:7: constant 1000 overflows int8
Hãy tự mình thử »