Go là một ngôn ngữ lập trình được thiết kế dựa trên tư duy lập trình hệ thống. Go được phát triển bởi Robert Griesemer, Rob Pike và Ken Thompson tại Google vào năm 2007. Điểm mạnh của Go là bộ thu gom rác và hỗ trợ lập trình đồng thời (tương tự như đa […]
Go là một ngôn ngữ lập trình được thiết kế dựa trên tư duy lập trình hệ thống. Go được phát triển bởi Robert Griesemer, Rob Pike và Ken Thompson tại Google vào năm 2007. Điểm mạnh của Go là bộ thu gom rác và hỗ trợ lập trình đồng thời (tương tự như đa luồng – multithreading). Go là một ngôn ngữ biên dịch như C/C++, Java, Pascal… Go được giới thiệu vào năm 2009 và được sử dụng hầu hết trong các sản phẩm của Google
- Một số đặc điểm
- Hỗ trợ khai báo kiểu dữ liệu động
- Tốc độ biên dịch nhanh
- Hỗ trợ các tác vụ đồng thời
- Ngôn ngữ đơn giản, ngắn gọn
Tuy nhiên chính vì muốn ngôn ngữ này trở nên cực kỳ đơn giản mà các nhà phát triển đã loại bỏ một số tính năng (mà mình cho là hữu ích) có trong các ngôn ngữ khác như:
- Không hỗ trợ thừa kế
- Không hỗ trợ quá tải toán tử hoặc ghi đè phương thức
- Không hỗ trợ thao tác trên con trỏ (vì lý do bảo mật)
- Không hỗ trợ kiểu Generic (giống như template trong C++)
2. Các kiểu dữ liệu
Interger
uint8 0 – 255
uint16 0 – 65535
uint32 0 – 4294967295
uint64 0 – 18446744073709551615
int8 -128 – 127
int16 -32768 – 32767
int32 -2147483648 – 2147483647
int64 -9223372036854775808 – 9223372036854775807
Float
Có 2 kiểu số thực là float32 và float64, 2 kiểu số phức là complex64 và complex128. Thông thường để biểu diễn số thực, bạn chỉ cần dùng float64 là đủ.
String
dùng để biểu diễn văn bản
Boolean
có các giá trị true hoặc false. && (phép AND), || (phép OR) và ! (phép NOT).
cách khai báo mảng dữ liệu
a := [4]float64{3.5, 7.2, 4.8, 9.5}
mảng 2 chiều trong golang
package main
import "fmt"
func main() {
a := [2][2]int{
{3, 5},
{7, 9},
}
fmt.Println(a)
b := [5][4]float64{
{1, 3},
{4.5, -3, 7.4, 2},
{6, 2, 11},
}
fmt.Println(b)
}
Slices trong golang
cái này đơn giản là lấy phần tử tử mảng , bắt đầu và kết thúc truyền số vào
package main
import (
"fmt"
)
func main() {
number := [6]int{2, 4, 5, 7, 8, 10, 13}
var s []int = number[2:5]
fmt.Println(s) // [5, 7, 8]
}
3. Khai báo biến
có 2 kiểu khai báo biến như sau có thể dùng var hoặc không
var x string = "Test"
x := "Test"
4.Các câu lệnh điều khiển
for
ví dụ về vòng lặp for
package main
import "fmt"
func main() {
max := 20
for i=0; i<max; i++ {
fmt.Println(i)
}
}
if
ví dụ về câu điều kiện if
package main
import "fmt"
func main() {
for i := 1; i <= 10 ; i++ {
if i % 2 == 0 {
fmt.Println(i, "chan")
} else {
fmt.Println(i, "le")
}
}
}
switch
ví dụ về switch
switch i {
case 0: fmt.Println("Khong")
case 1: fmt.Println("Mot")
case 2: fmt.Println("Hai")
case 3: fmt.Println("Ba")
case 4: fmt.Println("Bon")
case 5: fmt.Println("Nam")
default: fmt.Println("Khong dinh")
}
while
package main
import "fmt"
func main() {
i := 1
max := 20
for i < max {
fmt.Println(i)
i += 1
}
}
try catch in golang
trong golang chúng ta không dùng try catch mà bắt lỗi theo kiểu gọi như ví dụ sau
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open('./test.json')
if err != nil {
fmt.Println("Khong the mo file")
}
fmt.Printf("%s", file)
}
biến err=nil tức là không có lỗi
5. sử dụng con trỏ trong golang
ví dự về ứng dụng con trỏ trong golang
import "fmt"
func main() {
a := 5
thayDoiTrenGiaTri(a)
fmt.Println(a)
thayDoiTrenDiaChi(&a)
fmt.Println(a)
}
func thayDoiTrenGiaTri(a int) {
a = 100
}
func thayDoiTrenDiaChi(a *int){
*a = 200
}
chức năng của hàm là thay đổi gía trị của a =200 hàm thayDoiTrenGiaTri chỉ thay đổi giá trị trong hàm còn biến a ở ngoài hàm main không thay đổi. thayDoiTrenDiaChi là thay đổi trên địa chỉ nên thay đổi toàn bộ các giá trị biến a
Nguồn code có thể download tại đây