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ự.
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:
- integer
- floating-point
- 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 unsigned và long
- 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ử
+
và+=
. - 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à true
và false
.
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