Học Go cấp tốc Phần 1: Packages, Variables và Functions



  • Go (hay thường được gọi là Golang) là một ngôn ngữ lập trình mã nguồn mở được tạo ở Google vào năm 2009 bởi Robert Griesemer, Rob Pike, và Ken Thompson. Nó được ra đời nhằm mục đích xây dựng các ứng dụng web nhanh hơn, đơn giản hơn và đáp ứng được lượng truy cập lớn, ...  Về lịch sử ra đời cũng như giới thiệu chi tiết hơn các bạn có thể xem thêm ở wikipedia 😅

    Để học Go chúng ta có thể học theo sách, theo các khóa học, ... ở đây mình học theo Tour Golang, nó sẽ gồm các ví dụ và bài tập mẫu mô tả các chức năng cơ bản trong Go và đi kèm 1 editor online để chúng ta có thể thực hành luôn mà không cần cài đặt. Nếu bạn muốn thực hành trên máy thì phải cài đặt Go và một Editor để code, tham khảo hướng dẫn tại đây Install Golang hoặc Lập trình Golang trên MacOSX.

     

    Chú ý: Series này sẽ dựa trên Tour Golang và chủ yếu giải thích rõ hơn một số điểm khác biệt của Go so với các ngôn ngữ khác. Vì thế nó không dành cho những ai chưa từng lập trình (học cấp tốc mà, những ai chưa từng học lập trình thì nên học từ căn bản, chậm và chắc).

     

    Packages

    - Mọi chương trình viết từ Go đều được tạo bởi các package package chính dùng để chạy là main.

    - Để sử dụng các package khác thì chúng ta phải import, ví dụ muốn in 1 đoạn text ra console thì ta phải dùng package fmt

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Lại là Hello World")
    }

     

    Variables

    - Cú pháp của Go tương tự C nhưng cũng có nhiều điểm khác, ví dụ không có dấu chấm phẩy ở cuối các câu lệnh hay kiểu dữ liệu được khai báo ở sau tên biến. Về việc tại sao Go lại khai báo kiểu dữ liệu ngược so với hầu hết các ngôn ngữ khác các bạn tự tìm hiểu tại đây Go's Declaration Syntax.

    - Khai báo biến trong Go ngoài việc cú pháp hơi dị một chút, còn đâu thì vẫn tương tự như các ngôn ngữ khác:

    // Khai báo biến message có kiểu dữ liệu string
    var message string
    
    // Khai báo 3 biến c, python, java đều có kiểu dữ liệu là bool
    var c, python, java bool
    
    // Khai báo 2 biến i, j có kiểu dữ liệu là int và khởi tạo luôn giá trị cho chúng
    var i, j int = 1, 2
    
    // Khai báo ngắn gọn biến k và khởi tạo giá trị luôn cho nó.
    // Không dùng từ khóa var mà dùng dấu hai chấm, lúc này kiểu dữ liệu sẽ được ngầm định tùy theo giá trị của biến.
    k := 3

     

    - Các kiểu dữ liệu trong Go, ở phần mô tả của Tour of Go có liệt kê đầy đủ: Go basic types

    - Khi khai báo biến mà không khởi tạo giá trị ban đầu cho nó thì biến đó sẽ có giá trị zero tùy thuộc vào kiểu dữ liệu: 

    • 0 cho kiểu số.
    • false cho kiểu boolean.
    • "" cho kiểu chuỗi.

    -  Khi thực hiện tính toán giữa các biến với kiểu dữ liệu khác nhau sẽ cần ép kiểu (type conversions) theo công thức T(v) với T là kiểu dữ liệu (type) còn v là giá trị (value): 

    i := 55      // kiểu int
    j := 67.8    // kiểu float64
    sum := i + int(j)   // để tính tổng cần phải ép kiểu j về int
    fmt.Println(sum)

     

    - Khai báo hằng số thì tương tự khai báo biến nhưng dùng từ khóa const và không dùng được cú pháp viết tắt := 

    const Pi = 3.14

     

    Functions

    - Khai báo hàm sử dụng từ khóa func, và chú ý tham số truyền vào cũng khai báo kiểu dữ liệu sau tên tham số: 

    // Hàm tính tổng, có 2 tham số truyền vào với kiểu dữ liệu int và kết quả trả về cũng là int
    func add(x int, y int) int {
        return x + y
    }

     

    Khi các tham số truyền vào cùng kiểu dữ liệu thì có thể viết tắt như sau: 

    // Hàm tính tổng, có 2 tham số truyền vào với kiểu dữ liệu int và kết quả trả về cũng là int
    func add(x, y int) int {
        return x + y
    }

     

    - Điểm đặc biệt trong Go đó là function có thể trả về nhiều kết quả, ví dụ: 

    package main
    
    import "fmt"
    
    // Hàm swap trả về kết quả là 2 chuỗi
    func swap(x, y string) (string, string) {
    	return y, x
    }
    
    func main() {
        // Gán kết quả của hàm swap vào 2 biến a và b
        a, b := swap("hello", "world")
    
        // In ra giá trị của a và b
        fmt.Println(a, b)
    }

     

    - Kết quả trả về có thể đặt tên để sử dụng luôn trong hàm, ví dụ: 

    // Hàm split khai báo 2 kết quả trả về là x và y có kiểu dữ liệu là int
    func split(sum int) (x, y int) {
        x = sum * 4 / 9
        y = sum - x
    
        // return có thể để trống, function sẽ tự động trả về x và y (không khuyến khích)
        return
    }
    

     

    Tiếp theo phần 2: Điều khiển luồng với if, else, switch và defer.


Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới LaptrinhX, vui lòng đợi một lúc để chúng tôi thử kết nối lại.