Cách dùng hằng số trong Golang

Hằng số hay Const trong Golang là gì? Dưới đây là những điều bạn cần biết về cách dùng hằng số trong Go.

Đúng như tên gọi, hằng số có nghĩa là cố định. Trong ngôn ngữ lập trình cũng vậy, tức là, một khi giá trị của hằng số được định nghĩa, nó không thể được sửa đổi thêm nữa. Có thể có bất kỳ kiểu dữ liệu cơ bản nào của hằng số như hằng số nguyên, hằng số động, hằng số ký tự hoặc chuỗi ký tự.

Hằng số trong Go

Cách khai báo: Hằng số được khai báo giống như biến nhưng sử dụng từ khóa const làm tiền tố để khai báo hằng số có kiểu dữ liệu cụ thể. Không thể khai báo hằng số bằng cú pháp “:=”.

Ví dụ:

package main

import "fmt"

const PI = 3.14

func main() 
{
	const GFG = "Quantrimang"
	fmt.Println("Hello", GFG)

	fmt.Println("Happy", PI, "Day")

	const Correct= true
	fmt.Println("Go rules?", Correct)
}

Kết quả:

Hello Quantrimang
Happy 3.14 Day
Go rules? true

Những điều cần biết về hằng số trong Golang

Hằng số số không có kiểu và có kiểu

Hằng số có kiểu hoạt động giống như các biến bất biến chỉ có thể tương tác với cùng kiểu và hằng số không có kiểu hoạt động giống như các hằng số theo nghĩa đen có thể tương tác với các kiểu tương tự. Hằng số có thể được khai báo có hoặc không có kiểu trong Go. Sau đây là ví dụ hiển thị các hằng số số có kiểu và không có kiểu, có tên và không tên.

const untypedInteger          = 123
const untypedFloating          = 123.12

const typedInteger  int             = 123
const typedFloatingPoint   float64  = 123.12

Sau đây là danh sách các hằng số trong Ngôn ngữ Go:

  • Hằng số (Hằng số nguyên, Hằng số động, Hằng số phức)
  • Chuỗi ký tự
  • Hằng số Boolean

Hằng số số

Hằng số số là các giá trị có độ chính xác cao. Vì Go là ngôn ngữ có kiểu tĩnh không cho phép các phép toán kết hợp các kiểu số. Bạn không thể thêm float64 vào int, hoặc thậm chí là int32 vào int. Mặc dù vậy, vẫn hợp lệ khi viết 1e6*time.Second hoặc math.Exp(1) hoặc thậm chí là 1<<(‘\t’+2.0). Trong Go, hằng số, không giống như biến, hoạt động giống như các số thông thường.

Hằng số số bao gồm 3 loại:

  1. integer
  2. floating-point
  3. complex

Hằng số nguyên:

  • Tiền tố chỉ định cơ số: 0x hoặc 0X cho hệ thập lục phân, 0 cho hệ bát phân và không có gì cho hệ thập phân.
  • Một số nguyên theo nghĩa đen cũng có thể có hậu tố là sự kết hợp của U (chữ hoa) và L (chữ thường), tương ứng cho unsignedlong
  • Nó có thể là hằng số thập phân, bát phân hoặc thập lục phân.
  • Một int có thể lưu trữ tối đa một số nguyên 64 bit và đôi khi ít hơn.

Sau đây là một số ví dụ về Hằng số nguyên:

85 /* thập phân */
0213 /* bát phân */
0x4b /* thập lục phân */
30 /* int */
30u /* unsigned int */
30l /* long */
30ul /* unsigned long */
212 /* Hợp lệ */
215u /* Hợp lệ */
0xFeeL /* Hợp lệ */
078 /* Không hợp lệ: 8 không phải là chữ số bát phân */
032UU /* Không hợp lệ: không thể lặp lại hậu tố */

Hằng phức tạp:

Hằng phức tạp hoạt động rất giống với hằng số dấu chấm động. Nó là một cặp có thứ tự hoặc cặp số thực của hằng số nguyên (hoặc tham số). Và hằng số được phân tách bằng dấu phẩy, và cặp số được đặt trong dấu ngoặc đơn. Hằng số đầu tiên là phần thực, và hằng số thứ hai là phần ảo. Một hằng phức hợp, COMPLEX*8, sử dụng 8 byte lưu trữ.

Ví dụ:

(0.0, 0.0) (-123.456E+30, 987.654E-29)

Hằng số kiểu động:

  • Hằng số kiểu số thực có phần nguyên, phần thập phân, phần phân số và phần mũ.
  • Có thể được biểu diễn dưới dạng hằng số thực ở dạng thập phân hoặc dạng mũ.
  • Khi được biểu diễn bằng dạng thập phân, nó phải bao gồm dấu thập phân, số mũ hoặc cả hai.
  • Và khi được biểu diễn bằng dạng mũ, nó phải bao gồm phần nguyên, phần phân số hoặc cả hai.

Ví dụ:

3.14159 /* Hợp lệ */
314159E-5L /* Hợp lệ */
510E /* Không hợp lệ: số mũ không đầy đủ */
210f /* Không hợp lệ: không có số thập phân hoặc số mũ */
.e55 /* Không hợp lệ: thiếu số nguyên hoặc phân số */

Chuỗi ký tự

  • Go hỗ trợ hai loại chuỗi ký tự, tức là ” ” (kiểu dấu ngoặc kép) và ‘ ‘ (dấu ngoặc kép ngược).
  • Chuỗi có thể được nối với các toán tử ++=.
  • Chuỗi chứa các ký tự tương tự như ký tự literal: ký tự thuần túy, chuỗi thoát và ký tự phổ quát. Và đây là ký tự không có kiểu.
  • Giá trị bằng không của các kiểu chuỗi là chuỗi trống, có thể được biểu diễn bằng ” ” hoặc trong literal.
  • Tất cả các kiểu chuỗi đều có thể so sánh được bằng cách sử dụng các toán tử như ==, != và (để so sánh các kiểu giống nhau)

Cú pháp:

kiểu _string struct {
các phần tử *byte // các byte cơ bản
len int // số byte
}

Ví dụ:

"hello, quantrimang" 

"hello, \ 

quantrimang" 

"hello, " "quan" "trimang" 

Ở đây, cả ba câu lệnh trên đều giống nhau, nghĩa là chúng không có loại cụ thể nào.

Ví dụ:

package main

import "fmt"

func main()
{
	const A = "GFG"
	var B = "GeeksforGeeks"
	
	// Chuỗi Concat.
	var helloWorld = A+ " " + B
	helloWorld += "!"
	fmt.Println(helloWorld) 
	
	// Chuỗi so sánh.
	fmt.Println(A == "GFG") 
	fmt.Println(B < A) 
}

Kết quả:

GFG Quantrimang!
true
false

Độ phức tạp thời gian: O(1)
Không gian phụ trợ: O(1)

Hằng số boolean

Hằng Boolean tương tự như hằng chuỗi. Nó áp dụng cùng các quy tắc như hằng chuỗi. Điểm khác biệt duy nhất là nó có hai const không có kiểu là truefalse.

package main

import "fmt"

const Pi = 3.14

func main() 
{
	const trueConst = true
	
	// Định nghĩa kiểu bằng từ khóa type
	type myBool bool 
	var defaultBool = trueConst // được phép
	var customBool myBool = trueConst // được phép
	
	// defaultBool = customBool // không được phép
	fmt.Println(defaultBool)
	fmt.Println(customBool) 
}

Kết quả:

true
true

Độ phức tạp thời gian: O(1)
Không gian phụ trợ: O(1)

Hằng số trong Go: Go có các hằng số ký tự, chuỗi, Boolean và giá trị số. Const khai báo một giá trị hằng số. Một câu lệnh const có thể xảy ra khi có biến và do đó, thực hiện các phép toán số học mà không có bất kỳ độ chính xác cố định nào.

// Minh họa hằng số bằng cách dùng go.
package main

import (
	"fmt"
	"math"
)

const s string = "Quantrimang"

func main() {
	fmt.Println(s)

	const n = 5

	const d = 3e10 / n
	fmt.Println(d)

	fmt.Println(int64(d))

	fmt.Println(math.Sin(n))
}

Kết quả:

Quantrimang
6e+09
6000000000
-0.9589242746631385

Độ phức tạp thời gian: O(1)
Không gian phụ trợ: O(1)

Nếu bạn muốn định nghĩa nhiều hằng số cùng một lúc, bạn có thể thực hiện bằng cách sử dụng một khối dấu ngoặc như bên dưới.

package main

import "fmt"

const (
	GFG	 = "Quantrimang"
	Correct = true
	Pi	 = 3.14
)

// Hàm chính
func main() {

	fmt.Println("value of GFG : ", GFG)

	fmt.Println("value of Correct : ", Correct)

	fmt.Println("value of Pi : ", Pi)
}

Kết quả:

value of GFG :  Quantrimang
value of Correct :  true
value of Pi :  3.14
Thứ Hai, 17/02/2025 09:59
51 👨 163
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