FreeShare

Ví dụ về viết api bằng ngôn ngữ lập trình golang

Chủ nhật, 18/02/2024
image
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

  1. 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