Golang series – Bài 1 “Hello world” và khai biến

Go là một ngôn ngữ lập trình “đơn giản,” có thể học trong vài giờ nếu bạn quen thuộc với bất kỳ ngôn ngữ lập trình cơ bản nào. Go được thiết kế để giúp bạn viết code một cách đơn giản, quen thuộc nhất có thể. Số lượng từ khóa rất ít. Toàn bộ quy định ngôn ngữ chỉ cần vài trang.

Trong series Golang này mình sẽ cover các nội dung từ cơ bản nhất của Golang giúp bạn thành thạo ngôn ngữ này. Mình rất thích các caveat (các điểm cần chú ý) trong các ngôn ngữ lập trình (nhất là JavaScript) nên trong series này mình cũng sẽ tập trung vào các điểm này, giúp bạn nắm chắc Golang.

Trước khi viết ứng dụng đầu tiên, chúng ta sẽ tìm hiểu một vài khái niệm cơ bản nhất về biến trong Golang.

Trong đoạn code phía dưới, chúng ta thấy một số từ khóa như package, import và hàm main(). Trong Golang, tất cả các file đều bắt đầu với package và tên của package. Thường một app là một module gồm nhiều package.

Import giúp bạn import các thư viện chuẩn hoặc các package do bạn biết đặt ở folder khác, hoặc các thư viện thứ 3 do các tác giả khác viết giống npm. Trên Go, hàm main() được coi là entry point của tất cả app và ta đặt điểm bắt đầu của app trong hàm này mà không cần phải thực thi, Go sẽ làm việc đó cho ta.

Lệnh var khai báo một danh sách biến. Tên biến được khai báo trước, và kiểu biến được khai báo sau nó.

package main

import "fmt"

//Khai báo biến với từ hóa var -> tên biến --> kiểu dữ liệu

var address string = "laptrinh.org" //biến address có kiểu dữ liệu string và gán giá trị "laptrinh.org"
var lesson int = 1 //biến lesson có type là số (integer) và giá trị là 1.

_ = lesson // Dùng _ để giúp biến lesson "biến mất" (không cần sử dụng), không báo lỗi.

func main() {
    inside := "Biến trong hàm" // sử dụng shorthand :=. 
    fmt.Println("hello world from laptrinh.org")
    fmt.Println(address)
    fmt.Println(inside)
    //fmt.Println(lesson)
    var e int
    fmt.Println(e)

}

Bạn không thể viết cách khai báo hàm := nếu ngoài hàm.

Trong Golang, khi khai kháo biến, bạn BẮT BUỘC phải dùng nó, nếu không sẽ báo lỗi. Có một mẹo khá hay là bạn có thể gán lại _ = biến để khắc phục lỗi này. Trong ví dụ trên chúng ta đã làm điều đó với biến lesson.

Chú ý nếu khai biến mà không gán giá trị, ta sẽ có giá trị 0 (nếu là init). Biến e trong đoạn code trên có type là int (nếu float32, float64, rune cũng vậy) nên sẽ có giá trị 0, nếu type là string sẽ in ra một string rỗng, nếu type là bool sẽ ra false. Nếu khởi tạo pointer, giá trị mặc định là nil.

Cách khai báo giản lược khi ngoài hàm với Golang

Golang hỗ trợ cách khai báo giản lược ngoài hàm như sau:

var(
  one = 1
  two = "hai"
  three = true
)

Cách khai báo này giúp chúng ta tăng tốc khi chỉ cần sử dụng var một lần. Ngoài ra, với kiểu khai báo này, chúng ta không cần thông báo về kiểu dữ liệu cho các biến. Căn cứ vào dữ liệu đã cấp cho từng biến, Golang sẽ xác định kiểu dữ liệu cho các biến đó.

Cách khai báo giản lược trong hàm với Golang

Bên trong một hàm, câu lệnh gán ngắn := có thể được sử dụng thay cho một khai báo var với kiểu ngầm định. Lưu ý cách này chỉ hoạt động khi bạn đang khai báo biến trong một hàm nào đó và không áp dụng với hằng số (Sử dụng từ khóa const).

Như vậy, Golang có 2 cách khai báo biến ngắn gọn với var() (nếu ngoài hàm) và với cú pháp := (trong một hàm nào đó) mà không cần phải khai báo kiểu giá trị. Ngược lại, bạn cần khai báo loại dữ liệu cho các biến khi khai báo thông thường vì Golang là một ngôn ngữ static type.

Trong bài tiếp, chúng ta sẽ cùng tìm hiểu về hằng số trong Golang và các type của ngôn ngữ lập trình này.

Leave a Comment