Cách dùng toán tử trong Golang

Toán tử là nền tảng của mọi ngôn ngữ lập trình. Do đó, chức năng của ngôn ngữ Golang không đầy đủ nếu không sử dụng toán tử. Toán tử cho phép chúng ta thực hiện các loại hoạt động khác nhau trên toán hạng. Trong ngôn ngữ Go, toán tử có thể được phân loại dựa trên chức năng khác nhau của chúng.

Toán tử trong Golang

Toán tử số học

Các toán tử này được sử dụng để thực hiện phép toán trên các toán hạng trong ngôn ngữ Go:

  • Phép cộng: ‘+’ cộng hai toán hạng. Ví dụ: x+y.
  • Phép trừ: ‘-‘ trừ hai toán hạng. Ví dụ: x-y.
  • Phép nhân: ‘*’ nhân hai toán hạng. Ví dụ: x*y.
  • Phép chia: ‘/’ chia toán hạng thứ nhất cho toán hạng thứ hai. Ví dụ: x/y.
  • Phép chia dư: Toán tử ‘%’ trả về phần dư khi chia toán hạng thứ nhất cho toán hạng thứ hai. Ví dụ: x%y.

 Lưu ý: -, +, !, &, *, <- và ^ còn được gọi là toán tử một ngôi và thứ tự ưu tiên của toán tử một ngôi cao hơn. Các toán tử ++ và — đến từ các câu lệnh, chúng không phải là biểu thức, do đó chúng nằm ngoài hệ thống phân cấp toán tử.

Ví dụ:

//Minh họa chương trình Go dùng toán tử số học
package main 

import "fmt"

func main() { 
p:= 34
q:= 20
	
// Phép cộng
result1:= p + q 
fmt.Printf("Result of p + q = %d", result1) 
	
// Phép trừ
result2:= p - q 
fmt.Printf("\nResult of p - q = %d", result2) 
	
// Phép nhân
result3:= p * q 
fmt.Printf("\nResult of p * q = %d", result3) 
	
// Division 
result4:= p / q 
fmt.Printf("\nResult of p / q = %d", result4) 
	
// Modulus 
result5:= p % q 
fmt.Printf("\nResult of p %% q = %d", result5) 
} 

Kết quả:

Kết quả của p + q = 54
Kết quả của p - q = 14
Kết quả của p * q = 680
Kết quả của p / q = 1
Kết quả của p % q = 14

Toán tử quan hệ

Toán tử quan hệ được sử dụng để so sánh hai giá trị. Chúng ta hãy xem từng toán tử một:

  • Toán tử ‘=='(Bằng) kiểm tra xem hai toán hạng đã cho có bằng nhau hay không. Nếu bằng nhau, nó trả về true. Nếu không, nó trả về false. Ví dụ, 5==5 sẽ trả về true.
  • Toán tử ‘!='(Không bằng) kiểm tra xem hai toán hạng đã cho có bằng nhau hay không. Nếu không, nó trả về true. Ngược lại, nó trả về false. Đây là phần bù boolean chính xác của toán tử ‘==’. Ví dụ, 5!=5 sẽ trả về false.
  • Toán tử ‘>'(Lớn hơn) kiểm tra xem toán hạng đầu tiên có lớn hơn toán hạng thứ hai hay không. Nếu lớn hơn, nó trả về true. Nếu nhỏ hơn, nó trả về false. Ví dụ, 6>5 sẽ trả về true.
  • Toán tử ‘<‘(Nhỏ hơn) kiểm tra xem toán hạng đầu tiên có nhỏ hơn toán hạng thứ hai hay không. Nếu nhỏ hơn, nó trả về true. Nếu không, nó trả về false. Ví dụ, 6<5 sẽ trả về false.
  • ‘>='(Lớn hơn bằng)toán tử kiểm tra xem toán hạng đầu tiên có lớn hơn hoặc bằng toán hạng thứ hai không. Nếu lớn hơn hoặc bằng, nó trả về true. Nếu nhỏ hơn hoặc bằng, nó trả về false. Ví dụ: 5>=5 sẽ trả về true.
  • ‘<='(Nhỏ hơn bằng)toán tử kiểm tra xem toán hạng đầu tiên có nhỏ hơn hoặc bằng toán hạng thứ hai không. Nếu lớn hơn hoặc bằng, nó trả về true. Nếu nhỏ hơn hoặc bằng, nó trả về false. Ví dụ: 5<=5 cũng sẽ trả về true.

Ví dụ:

// Minh họa chương trình Go dùng toán tử quan hệ
package main 

import "fmt"

func main() { 
p:= 34
q:= 20
	
// ‘=='(Equal To) 
result1:= p == q 
fmt.Println(result1) 
	
// ‘!='(Not Equal To) 
result2:= p != q 
fmt.Println(result2) 
	
// ‘<‘(Less Than) 
result3:= p < q 
fmt.Println(result3) 
	
// ‘>'(Greater Than) 
result4:= p > q 
fmt.Println(result4) 
	
// ‘>='(Greater Than Equal To) 
result5:= p >= q 
fmt.Println(result5) 
	
// ‘<='(Less Than Equal To) 
result6:= p <= q 
fmt.Println(result6) 
	
	
} 

Kết quả:

false
true
false
true
true
false

Toán tử logic

Chúng được sử dụng để kết hợp hai hoặc nhiều điều kiện/ràng buộc hoặc để bổ sung cho việc đánh giá điều kiện ban đầu đang xem xét.

  • AND: Toán tử ‘&&’ trả về true khi cả hai điều kiện đang xem xét đều được thỏa mãn. Nếu không, nó trả về false. Ví dụ: a && b trả về true khi cả a và b đều đúng (tức là khác không).
  • OR: Toán tử ‘||’ trả về true khi một (hoặc cả hai) điều kiện đang xem xét được thỏa mãn. Nếu không, nó trả về false. Ví dụ: a || b trả về true nếu một trong a hoặc b là đúng (tức là khác không). Tất nhiên, nó trả về true khi cả a và b đều đúng.
  • Logic NOT: Toán tử ‘!’ trả về true khi điều kiện đang xem xét không được thỏa mãn. Nếu không, nó trả về false. Ví dụ: !a trả về true nếu a là sai, tức là khi a = 0.

Ví dụ:

// Minh họa chương trình Go dùng toán tử logic
package main 
import "fmt"
func main() { 
	var p int = 23
	var q int = 60
		
	if(p!=q && p<=q){ 
		fmt.Println("True") 
	} 
		
	if(p!=q || p<=q){ 
		fmt.Println("True") 
	} 
		
	if(!(p==q)){ 
		fmt.Println("True") 
	} 
		
} 

Kết quả:

True
True
True

Toán tử bitwise

Trong ngôn ngữ Go, có 6 toán tử bitwise hoạt động ở cấp độ bit hoặc được sử dụng để thực hiện các phép toán bit-by-bit. Sau đây là các toán tử bitwise:

  • & (bitwise AND): Lấy hai số làm toán hạng và thực hiện AND trên mọi bit của hai số. Kết quả của AND chỉ là 1 nếu cả hai bit đều là 1.
  • | (bitwise OR): Lấy hai số làm toán hạng và thực hiện OR trên mọi bit của hai số. Kết quả của OR là 1 nếu bất kỳ bit nào trong hai bit đều là 1.
  • ^ (bitwise XOR): Lấy hai số làm toán hạng và thực hiện XOR trên mọi bit của hai số. Kết quả của XOR là 1 nếu hai bit khác nhau.
  • << (shift trái): Lấy hai số, dịch chuyển trái các bit của toán hạng thứ nhất, toán hạng thứ hai quyết định số vị trí cần dịch chuyển.
  • >> (shift phải): Lấy hai số, dịch chuyển phải các bit của toán hạng thứ nhất, toán hạng thứ hai quyết định số vị trí cần dịch chuyển.
  • &^ (AND NOT): Đây là một toán tử bit rõ ràng.

Ví dụ:

// Minh họa chương trình Go dùng toán tử bitwise
package main 

import "fmt"

func main() { 
p:= 34
q:= 20
	
// & (bitwise AND) 
result1:= p & q 
fmt.Printf("Result of p & q = %d", result1) 
	
// | (bitwise OR) 
result2:= p | q 
fmt.Printf("\nResult of p | q = %d", result2) 
	
// ^ (bitwise XOR) 
result3:= p ^ q 
fmt.Printf("\nResult of p ^ q = %d", result3) 
	
// << (left shift) 
result4:= p << 1
fmt.Printf("\nResult of p << 1 = %d", result4) 
	
// >> (right shift) 
result5:= p >> 1
fmt.Printf("\nResult of p >> 1 = %d", result5) 
	
// &^ (AND NOT) 
result6:= p &^ q 
fmt.Printf("\nResult of p &^ q = %d", result6) 
	
	
} 

Kết quả:

Kết quả của p & q = 0
Kết quả của p | q = 54
Kết quả của p ^ q = 54
Kết quả của p << 1 = 68
Kết quả của p >> 1 = 17
Kết quả của p &^ q = 34

Toán tử gán

Toán tử gán được sử dụng để gán giá trị cho một biến. Toán hạng bên trái của toán tử gán là một biến và toán hạng bên phải của toán tử gán là một giá trị. Giá trị bên phải phải có cùng kiểu dữ liệu với biến bên trái, nếu không trình biên dịch sẽ báo lỗi. Các loại toán tử gán khác nhau được hiển thị bên dưới:

  • “=”(Gán đơn giản): Đây là toán tử gán đơn giản nhất. Toán tử này được sử dụng để gán giá trị bên phải cho biến bên trái.
  • “+=”(Gán cộng): Toán tử này là sự kết hợp của các toán tử ‘+’ và ‘=’. Toán tử này trước tiên cộng giá trị hiện tại của biến bên trái với giá trị bên phải, sau đó gán kết quả cho biến bên trái.
  • “-=”(Gán trừ): Toán tử này là sự kết hợp của các toán tử ‘-‘ và ‘=’. Toán tử này trước tiên trừ giá trị hiện tại của biến bên trái khỏi giá trị bên phải, sau đó gán kết quả cho biến bên trái.
  • “*=”(Gán phép nhân): Toán tử này là sự kết hợp của các toán tử ‘*’ và ‘=’. Toán tử này trước tiên nhân giá trị hiện tại của biến bên trái với giá trị bên phải, sau đó gán kết quả cho biến bên trái.
  • “/=”(Gán phép chia): Toán tử này là sự kết hợp của các toán tử ‘/’ và ‘=’. Toán tử này trước tiên chia giá trị hiện tại của biến bên trái cho giá trị bên phải, sau đó gán kết quả cho biến bên trái.
  • “%=”(Gán phép chia lấy phần dư): Toán tử này là sự kết hợp của các toán tử ‘%’ và ‘=’. Toán tử này trước tiên lấy phần dư của giá trị hiện tại của biến bên trái cho giá trị bên phải, sau đó gán kết quả cho biến bên trái.
  • “&=”(Gán phép AND theo bit): Toán tử này là sự kết hợp của các toán tử ‘&’ và ‘=’. Toán tử này trước tiên “AND theo bit” giá trị hiện tại của biến bên trái cho giá trị bên phải, sau đó gán kết quả cho biến bên trái.
  • “^=”(Bitwise loại trừ OR): Toán tử này là sự kết hợp của các toán tử ‘^’ và ‘=’. Toán tử này trước tiên “Bitwise Exclusive OR” giá trị hiện tại của biến bên trái theo giá trị bên phải rồi gán kết quả cho biến bên trái.
  • “|=”(Bitwise bao gồm OR): Toán tử này là sự kết hợp của các toán tử ‘|’ và ‘=’. Toán tử này trước tiên “Bitwise Inclusive OR” giá trị hiện tại của biến bên trái theo giá trị bên phải rồi gán kết quả cho biến bên trái.
  • “<<=: Toán tử này là sự kết hợp của các toán tử ‘<<’ và ‘=’. Toán tử này trước tiên “Shift trái AND” giá trị hiện tại của biến bên trái theo giá trị bên phải rồi gán kết quả cho biến bên trái.
  • “>>=”: Toán tử này là sự kết hợp của các toán tử ‘>>’ và ‘=’. Toán tử này đầu tiên “Shift phải AND” giá trị hiện tại của biến bên trái theo giá trị bên phải, sau đó gán kết quả cho biến bên trái.

Ví dụ:

// Minh họa chương trình Go dùng toán tử gán
package main 
	
import "fmt"
	
func main() { 
var p int = 45
	var q int = 50
	
// “=”(Simple Assignment) 
p = q 
fmt.Println(p) 
	
// “+=”(Add Assignment) 
	p += q 
fmt.Println(p) 
	
//“-=”(Subtract Assignment) 
p-=q 
fmt.Println(p) 
	
// “*=”(Multiply Assignment) 
p*= q 
fmt.Println(p) 
	
// “/=”(Division Assignment) 
	p /= q 
fmt.Println(p) 
	
	// “%=”(Modulus Assignment) 
	p %= q 
fmt.Println(p) 
	
} 

Kết quả:

50
100
50
2500
50
0

Toán tử khác

  • &: Toán tử này trả về địa chỉ của biến.
  • *: Toán tử này cung cấp con trỏ đến một biến.
  • <-: Tên của toán tử này là nhận. Nó được sử dụng để nhận giá trị từ kênh.
// Minh họa chương trình sử dụng toán tử khác
package main 
	
import "fmt"
	
func main() { 
a := 4
	
// Dùng địa chỉ của toán tử (&) toán tử trỏ gián tiếp (*)

b := &a 
fmt.Println(*b) 
*b = 7
fmt.Println(a) 
} 

Kết quả:

4
7
Thứ Sáu, 21/02/2025 10:09
2,810 👨 220
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
❖
    Chia sẻ
    Chia sẻ FacebookChia sẻ Twitter
    Đóng