[Go] Tìm hiểu về Biến (Variable) trong Golang

[Go] Tìm hiểu về Biến (Variable) trong GolangCuongquach.com | Chúng ta cùng tìm hiểu nội dung cơ bản khi học lập trình ngôn ngữ Go (Golang), đó là làm chủ việc khai báo Biến (variable) trong Golang nhé.

tim-hieu-ve-bien-trong-golang

Variable là gì ?

Nếu các bạn có nhớ qua thuật ngữ biến số trong Toán học nghĩa là một số có thể bị thay đổi, thì biến dữ liệu (variable) trong lập trình nghĩa là một giá trị dữ liệu có thể thay đổi. Thay đổi ở đây nghĩa là thay đổi bởi các tác động trong mã nguồn của bạn, ví dụ có một hàm nào đó thực thi để thay đổi giá trị của biến.

Các kiểu dữ liệu trong Variable

  • byte
  • int
  • float32
  • float64
  • string
  • bool
  • uint

Bạn có thể sử dụng trang chạy code Go online để thực hành mà không cần laptop : https://play.golang.org

1. Khai báo biến (variable) trong Go

Có 2 cách để khai báo biến trong Golang :

1.1 Cú pháp 1

var variableName dataType = initialValue

Bạn khai báo tên biến, kiểu dữ liệu của biến và giá trị của biến (‘initialValue‘) nếu muốn. Trong đó ‘initialValue‘ là phần phụ, bạn có thể không cần khai báo.

Ví dụ 1:

var myName string
var myAge int
var mySalary float32
var myBool bool

Lúc này các biến trên đều đã được khai báo sử dụng, nhưng chưa có giá trị biến nào cả. Chúng ta sẽ chứa giá trị ‘zero-value‘ khi không có giá trị biến được khởi tạo. Sau đó bạn có thể gán giá trị cho biến như sau :

var myName string
myName = "Quach CHi Cuong"

var myAge int
myAge = 27

var mySalary 
mySalary = "9.999"

Nhìn thì thấy tốn thời gian code thêm 1 dòng để nhập giá trị biến thì ta có thể khai báo giá trị biến luôn khi khai báo biến với cú pháp 1.

var myName string = "Quach Chi Cuong"
var myAge int = 27
var mySalary float32 = 9.999
var myBool bool = True

Nếu bạn bỏ phần ‘dataType‘ (kiểu dữ liệu) đi khi khai báo biến, thì Go cũng đủ thông minh để nhận diện kiểu dữ liệu của bạn dựa trên giá trị biến đấy.

var myName = "Quach Chi Cuong"
var myAge = 27
var mySalary = 9.999
var myBool = True

Code mẫu :

package main

import "fmt"

func main() {
	var myName = "Quach Chi Cuong"
	var myAge = 27
	var mySalary = 9.999

	fmt.Println("Hello", myName, myAge, mySalary)
}
> go run main.go 
Hello Quach Chi Cuong 27 9.999

Bạn có thể khai báo biến với cú pháp 1 ở trong và ngoài hàm function.

Ví dụ : ngoài hàm function , bạn có thể truy xuất biến từ trong các function khác.

package main

import "fmt"

var myName = "Quach Chi Cuong"
var myAge int = 27
var mySalary = 9.9999

func main() {
	fmt.Println("Hello", myName, myAge, mySalary)
	foo()
}

func foo() {
	fmt.Println("My name is ", myName)
}

Ví dụ : trong hàm function, thì biến đó mang tính chất local của hàm đó, không thể truy xuất từ hàm khác.

package main

import "fmt"

func main() {
	var myName = "Quach Chi Cuong"
	var myAge int = 27
	var mySalary = 9.9999
	fmt.Println("Hello", myName, myAge, mySalary)
	foo()
}

1.2 Cú pháp 2 (short-hand declaration)

variableName := initialValue

Go hỗ trợ hình thức khai báo biến cùng giá trị biến ngắn gọn, giúp bạn code lẹ hơn với cú pháp 2 là ‘:=‘. Go tự nhận biết được kiểu dữ liệu dựa trên giá trị biến.

myName := "Quach Chi Cuong"
myAge := 27
mySalary := 9.999

Cú pháp này cũng có thể sử dụng để khởi tạo biến và gán giá trị biến từ kết quả trả về của 1 hàm khác.

whoami := letMeKnow(abc)

Code mẫu:

package main

import (  
    "fmt"
    "math"
)

func main() {  
    a, b := 145.8, 543.8
    c := math.Min(a, b)
    fmt.Println("minimum value is ", c)
}
> go run main.go 
minimum value is  145.8

Lưu ý:
– Bạn chỉ có thể xài cú pháp 2 trong một hàm function , nếu xài ngoài block hàm function thì sẽ lỗi.
– Nếu bạn đã khai báo cú pháp 2 để khởi tạo biến, mà khởi tạo lại lần nữa sẽ gặp lỗi thông báo khi build rằng biến này đã được khởi tạo rồi.

Hai dòng code khai báo dưới sẽ bị lỗi, khi khai báo lại mới biến ‘a’ và ‘b’ lần nữa.

a, b := 20, 30 
a, b := 40, 50

1.3 Zero-value

Bất kì biến nào được khai báo nhưng không có có giá trị biến (initial value) thì sẽ có một giá trị 0 (zero value). Giá trị 0 này sẽ riêng cho từng loại kiểu dữ liệu.

  • bool : false
  • string : “”
  • int, int8, int16 : 0
  • float32, float64 : 0.0

Code mẫu:

package main

import "fmt"

func main() {
	var (
		firstName, lastName string
		age                 int
		salary              float64
		isConfirmed         bool
	)

	fmt.Printf("firstName: %s, lastName: %s, age: %d, salary: %f, isConfirmed: %t\n",
		firstName, lastName, age, salary, isConfirmed)
}
> go run main.go 
firstName: , lastName: , age: 0, salary: 0.000000, isConfirmed: false

2. Khai báo nhiều biến cùng lúc

Cú pháp:

var name1, name2 type = initialvalue1, initialvalue2

Bạn có thể khai báo nhiều biến, kiểu dữ liệu của các biến và nhiều giá trị biến cùng lúc. Dưới đây là khai báo 3 biến cùng 1 kiểu dữ liệu :

var var1, var2, var3 int

hoặc vừa khai báo vừa gán giá trị tuần tự từng biến.

var var1, var2, var3 int = 1, 2, 3

hoặc

var var1, var2, var3 = 1, 2.2, false

Cũng có thể áp dụng cú pháp 2 (:=) đấy.

var1, var2, var3 := 1, 2.2, false

Cũng đơn giản phải không nào ?!

3. Khai báo biến trong block ‘var()’

Bạn có thể sử dụng cú pháp block ‘var()‘ để khai báo biến mà bạn mong muốn như ở trên, giúp tiết kiệm thời gian. Block ‘var()‘ là một cách quy hoạch việc khai báo biến để nhìn code tường minh hơn thôi.

Ví dụ : bạn phải khai báo 3 lần cho 3 biến như dưới

var myName = "Quach Chi Cuong" 
var myAge = 27 
var mySalary = 9.999

thì bạn có thể khai báo ‘var()‘ một lần cho 3 biến.

var(
    myName = "Quach Chi Cuong"
    myAge int = 27
    mySalary := 9.9999
)

Lưu ý :

  • Không hỗ trợ cú pháp (:=) .
  • Có thể khai báo var() trong và ngoài function.

4. Lưu ý khác

– Khi bạn code Go, thì Go thường khuyến khích bạn sử dụng cú pháp đặt tên dính liền ‘myName‘ thay vì ‘my_name‘, thật ra thì cái này cũng tuỳ sở thích mỗi người thôi.

Nguồn: https://cuongquach.com/

Previous articleEbook Giáo trình An toàn Bảo mật Dữ liệu (PDF)
Next articleGiáo trình Đào tạo Bảo Mật Hệ Thống Thông Tin – ĐH Bách Khoa (PDF)
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !