Khóa học go

Hằng trong Go Lang

0 phút đọc

Trong Go, hằng (constants) là một khái niệm quan trọng và được sử dụng rộng rãi. Hằng là một giá trị không thể thay đổi sau khi được khai báo. Chúng được sử dụng để đại diện cho các giá trị cố định, giúp mã nguồn trở nên dễ đọc, dễ bảo trì và an toàn hơn. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về hằng trong Go, bao gồm cách khai báo, các loại hằng, quy tắc đặt tên và một số ví dụ minh họa.

Khai Báo Hằng

Trong Go, chúng ta sử dụng từ khóa const để khai báo hằng. Cú pháp cơ bản như sau:

const tên_hằng = giá_trị

Ví dụ:

const PI = 3.14159
const HELLO_WORLD = "Hello, World!"

Trong ví dụ trên, chúng ta khai báo hai hằng: PI với giá trị 3.14159HELLO_WORLD với giá trị "Hello, World!".

Ngoài ra, Go cũng cho phép khai báo nhiều hằng cùng một lúc bằng cách sử dụng khối const:

const (
    PI      = 3.14159
    E       = 2.71828
    GRAVITY = 9.8
)

Loại Hằng

Trong Go, có hai loại hằng chính: hằng có kiểu (typed constants) và hằng không có kiểu (untyped constants).

Hằng Có Kiểu (Typed Constants)

Hằng có kiểu là những hằng được khai báo với một kiểu dữ liệu cụ thể. Ví dụ:

const PI float64 = 3.14159
const HELLO string = "Hello, World!"

Trong ví dụ trên, PI là một hằng có kiểu float64, và HELLO là một hằng có kiểu string.

Hằng Không Có Kiểu (Untyped Constants)

Hằng không có kiểu là những hằng được khai báo mà không chỉ định kiểu dữ liệu. Go sẽ tự động suy ra kiểu dữ liệu của hằng dựa trên giá trị được gán. Ví dụ:

const PI = 3.14159 // Kiểu dữ liệu mặc định là float64
const HELLO = "Hello, World!" // Kiểu dữ liệu mặc định là string

Hằng không có kiểu rất hữu ích trong các biểu thức số học, vì chúng cho phép thực hiện các phép tính với độ chính xác cao hơn so với các giá trị có kiểu.

Quy Tắc Đặt Tên Hằng

Trong Go, có một số quy tắc đặt tên hằng cần tuân thủ:

  1. Tên hằng phải bắt đầu bằng một chữ cái hoặc dấu gạch dưới (_).
  2. Tên hằng có thể chứa chữ cái, chữ số và dấu gạch dưới.
  3. Theo quy ước, tên hằng thường được viết hoa và sử dụng dấu gạch dưới (_) để phân cách các từ (ví dụ: MAX_VALUE, MIN_LIMIT).
  4. Nếu tên hằng bắt đầu bằng chữ hoa, hằng đó sẽ có phạm vi toàn cục (exported) và có thể được truy cập từ các gói khác.
  5. Nếu tên hằng bắt đầu bằng chữ thường, hằng đó sẽ có phạm vi cục bộ (unexported) và chỉ có thể được truy cập trong cùng một gói.

Ví Dụ Sử Dụng Hằng

Dưới đây là một số ví dụ minh họa cách sử dụng hằng trong Go:

Ví Dụ 1: Sử dụng hằng có kiểu

package main

import "fmt"

const PI float64 = 3.14159

func main() {
    radius := 2.0
    area := PI * radius * radius
    fmt.Printf("Diện tích hình tròn có bán kính %.2f là %.2f\n", radius, area)
}

Kết quả:

Diện tích hình tròn có bán kính 2.00 là 12.57

Trong ví dụ này, chúng ta khai báo một hằng có kiểu PI với giá trị 3.14159. Sau đó, chúng ta sử dụng PI để tính diện tích hình tròn.

Ví Dụ 2: Sử dụng hằng không có kiểu

package main

import "fmt"

const (
    A = 1
    B
    C = 2
    D
)

func main() {
    fmt.Println(A, B, C, D) // Output: 1 1 2 2
}

Trong ví dụ này, chúng ta khai báo một nhóm hằng không có kiểu. Hằng BD sẽ kế thừa giá trị của hằng trước đó (AC tương ứng).

Ví Dụ 3: Sử dụng hằng trong biểu thức số học

package main

import "fmt"

const (
    A = 1
    B = 2
    C = A * B
    D = C / B
)

func main() {
    fmt.Println(C, D) // Output: 2 1
}

Trong ví dụ này, chúng ta sử dụng hằng không có kiểu AB để tính toán giá trị của hằng CD. Kết quả là C có giá trị 2 (kết quả của 1 * 2), và D có giá trị 1 (kết quả của 2 / 2).

Ví Dụ 4: Sử dụng hằng với iota

iota là một hằng đặc biệt trong Go, được sử dụng để tạo ra một chuỗi giá trị liên tục. Giá trị của iota được tăng lên 1 sau mỗi lần khai báo hằng trong cùng một khối const.

package main

import "fmt"

const (
    A = iota // A = 0
    B        // B = 1
    C        // C = 2
    D = iota // D = 3
    E        // E = 4
)

func main() {
    fmt.Println(A, B, C, D, E) // Output: 0 1 2 3 4
}

Trong ví dụ này, chúng ta sử dụng iota để tạo ra một chuỗi giá trị liên tục cho các hằng A, B, C, DE.

Kết Luận

Hằng là một khái niệm quan trọng trong Go, giúp mã nguồn trở nên dễ đọc, dễ bảo trì và an toàn hơn. Bằng cách sử dụng hằng, chúng ta có thể đại diện cho các giá trị cố định và tránh sử dụng các giá trị "ma thuật" trong mã nguồn. Go cung cấp hai loại hằng: hằng có kiểu và hằng không có kiểu, mỗi loại có ưu điểm riêng. Việc tuân thủ các quy tắc đặt tên hằng cũng rất quan trọng để đảm bảo tính nhất quán và dễ đọc của mã nguồn. Với các ví dụ minh họa trên, hy vọng bạn đã hiểu rõ hơn về cách sử dụng hằng trong Go và có thể áp dụng chúng một cách hiệu quả trong các dự án của mình.

Avatar
Được viết bởi

TechMely Team

Gợi ý câu hỏi phỏng vấn

entry

Ngăn xếp và hàng đợi khác nhau thế nào?

entry

Triển khai hàng đợi bằng ngăn xếp

entry

Triển khai ngăn xếp bằng hàng đợi?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào