Data types specify what type of data a valid Golang variable can contain . In Go language, types are divided into four categories as follows:

- Basic types: Numbers, strings and booleans
- Aggregate types: Arrays and structures
- Reference types: Pointer, slice, map, function and channel
- Interface type
Here we will discuss the Basic Data Types in Go language. They are classified into three sub-categories:
Common data types in Golang
Numbers in Golang
In Go language, numbers are divided into three sub-categories:
Integers: In Go language, both signed and unsigned integers come in four different sizes as shown in the table below. Signed integers are represented by intand unsigned integers are represented by uint.
Possible arithmetic operations: Addition, subtraction, multiplication, division, remainder
|
Data type
|
Describe
|
| int8 |
8-bit signed integer |
| int16 |
16-bit signed integer |
| int32 |
32-bit signed integer |
| int64 |
64-bit signed integer |
| uint8 |
8-bit unsigned integer |
| uint16 |
Unsigned Integer1 6-bit |
| uint32 |
32-bit unsigned integer |
| uint64 |
64-bit unsigned integer |
| int |
Both unsigned and signed are the same size, 32 or 64 bits |
| uint |
Both unsigned and signed are the same size, 32 or 64 bits |
| runes |
This is a synonym for int32 and also represents Unicode code points. |
| byte |
This is a synonym for uint8. |
| uintptr |
This is an unsigned integer type. Its width is undefined, but it can hold all the bits of a pointer value. |
For example:
// Chương trình Go sử dụng số nguyên
package main
import "fmt"
func main() {
// Dùng 8-bit unsigned int
var X uint8 = 225
fmt.Println(X, X-3)
// Dùng 16-bit signed int
var Y int16 = 32767
fmt.Println(Y+2, Y-2)
}
Result:
225 222
-32767 32765
Arithmetic operations example:
// Các phép tính số học có thể có đối với số nguyên
// Tác giả : Chhanda Saha
package main
import "fmt"
func main() {
var x int16 = 170
var y int16 = 83
//Cộng
fmt.Printf(" addition : %d + %d = %d\n ", x, y, x+y)
//Trừ
fmt.Printf("subtraction : %d - %d = %d\n", x, y, x-y)
//Nhân
fmt.Printf(" multiplication : %d * %d = %d\n", x, y, x*y)
//Chia
fmt.Printf(" division : %d / %d = %d\n", x, y, x/y)
//Mô đun
fmt.Printf(" remainder : %d %% %d = %d\n", x, y, x%y)
}
Result:
Cộng : 170 + 83 = 253
Trừ : 170 - 83 = 87
Nhân : 170 * 83 = 14110
Chia : 170 / 83 = 2
Số dư : 170 % 83 = 4
- Floating Point Numbers: In Go language, floating point numbers are divided into two types as shown in the table below.
- Arithmetic operations can be: Addition, subtraction, multiplication, division.
- There are three fonts:
- decimal (3.15)
- power (12e18 or 3e10)
- mixed (13.16e12)
| Data type |
Describe
|
| float32 |
32-bit IEEE 754 floating point number |
| float64 |
64-bit IEEE 754 floating point number |
For example:
//Minh họa chương trình Go dùng số dấu chấm động
package main
import "fmt"
func main() {
a := 20.45
b := 34.89
// Phép trừ hai số dấu chấm động
c := b-a
// Hiện kết quả
fmt.Printf("Result is: %f", c)
// Hiện kiểu biến C
fmt.Printf("\nThe type of c is : %T", c)
}
Result:
Kết quả: 14.440000
Kiểu của C là : float64
Example of arithmetic operations for floating point numbers:
// Các phép toán số học có thể có cho số thực
// Tác giả : Chhanda Saha
package main
import "fmt"
func main() {
var x float32 = 5.00
var y float32 = 2.25
//Phép cộng
fmt.Printf("addition : %g + %g = %g\n ", x, y, x+y)
//Phép trừ
fmt.Printf("subtraction : %g - %g = %g\n", x, y, x-y)
//Phép nhân
fmt.Printf("multiplication : %g * %g = %g\n", x, y, x*y)
//Phép chia
fmt.Printf("division : %g / %g = %g\n", x, y, x/y)
}
Result:
Phép cộng : 5 + 2.25 = 7.25
Phép trừ : 5 - 2.25 = 2.75
Phép nhân : 5 * 2.25 = 11.25
Phép chia : 5 / 2.25 = 2.2222223
- Complex Numbers: Complex numbers are divided into two parts, shown in the table below.
float32and float64also a part of these complex numbers. The built-in function creates a complex number from its imaginary part and real part and the built-in imaginary and real function extracts those parts.
- There are several built-in functions in complex numbers:
- complex – create complex number from two floats.
- real() – gets the real part of the input complex number as a float.
- imag() – get the imaginary part of the input complex number as a float
| Data type |
Describe
|
| complex64 |
Complex numbers contain float32 as real and imaginary components. |
| complex128 |
Complex numbers contain float64 as real and imaginary components. |
For example:
// Chương trình Go dùng số phức
package main
import "fmt"
func main() {
var a complex128 = complex(6, 2)
var b complex64 = complex(9, 2)
fmt.Println(a)
fmt.Println(b)
// Hiện kiểu
fmt.Printf("The type of a is %T and "+
"the type of b is %T", a, b)
}
Result:
(6+2i)
(9+2i)
Kiểu của a là complex128, kiểu của b là complex64
Examples of built-in functions:
// Các hàm tích hợp là số phức
// Tác giả : Chhanda Saha
package main
import "fmt"
func main() {
comp1 := complex(10, 11)
// cú pháp init số phức
comp2 := 13 + 33i
fmt.Println("Complex number 1 is :", comp1)
fmt.Println("Complex number 1 is :", comp2)
// lấy phần real
realNum := real(comp1)
fmt.Println("Real part of complex number 1:", realNum)
// lấy phần hình ảnh
imaginary := imag(comp2)
fmt.Println("Imaginary part of complex number 2:", imaginary)
}
Result:
Số phức 1 là: (10+11i)
Số phức 1 là: (13+33i)
Phần thực của số phức 1: 10
Phần ảo của số phức 2: 33
Boolean
The boolean data type represents only one bit of information that is either true or false. Values of the boolean type cannot be implicitly or explicitly converted to any other type.
For example:
//Minh họa chương trình dùng boolean
package main
import "fmt"
func main() {
// Các biến
str1 := "Quantrimang"
str2:= "quantrimang"
str3:= "Quantrimang"
result1:= str1 == str2
result2:= str1 == str3
// Hiện kết quả
fmt.Println( result1)
fmt.Println( result2)
// Hiện kiểu của result1 và result2
fmt.Printf("Kiểu của result1 là %T và "+
"kiểu của result2 là %T",
result1, result2)
}
Result:
false
true
Kiểu của result1 là bool và kiểu của result2 là bool
Chain
The string data type represents a sequence of Unicode code points. In other words, we can say that a string is an immutable sequence of bytes, meaning that once a string is created, you cannot change it. Strings can contain arbitrary data, including zero-value bytes in human-readable form. Strings can be concatenated using the addition operator (+).
For example:
// Chương trình Go dùng chuỗi
package main
import "fmt"
func main() {
// Biến str chứa chuỗi
str := "Quantrimang"
// Hiện độ dài của chuỗi
fmt.Printf("Length of the string is:%d",
len(str))
// Hiện chuỗi
fmt.Printf("\nString is: %s", str)
// Hiện kiểu biến str
fmt.Printf("\nType of str is: %T", str)
}
Result:
Chiều dài của chuỗi là: 13
Chuỗi là: Quantrimang
Kiểu của chuỗi là: chuỗi
Example of string concatenation:
// Nối chuỗi
// Tác giả : Chhanda Saha
package main
import "fmt"
func main() {
var str1 string = "STRING_"
var str2 string = "Concatenation"
// Nối chuỗi bằng toán tử +
fmt.Println("New string : ", str1+str2)
}
Result:
New string : STRING_Concatenation