Khóa học go

Kiểu Dữ Liệu trong Go Lang

0 phút đọc

Go, hay còn gọi là Golang, là một ngôn ngữ lập trình mã nguồn mở được phát triển bởi Google. Một trong những khía cạnh quan trọng nhất của bất kỳ ngôn ngữ lập trình nào là cách nó xử lý các kiểu dữ liệu. Kiểu dữ liệu xác định loại giá trị mà một biến có thể lưu trữ và các phép toán có thể thực hiện trên giá trị đó. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về các kiểu dữ liệu trong Go, bao gồm các kiểu dữ liệu cơ bản, kiểu dữ liệu tổng hợp, kiểu dữ liệu tham chiếu, và kiểu dữ liệu giao diện, cùng với các ví dụ minh họa cụ thể.

Các Kiểu Dữ Liệu Cơ Bản

1. Số Nguyên (Integers)

Số nguyên là các số không có phần thập phân. Trong Go, số nguyên được chia thành hai loại: số nguyên có dấu (signed integers) và số nguyên không dấu (unsigned integers). Mỗi loại có bốn kích thước khác nhau: 8-bit, 16-bit, 32-bit, và 64-bit.

Ví dụ:

package main

import "fmt"

func main() {
    var a int8 = -128
    var b uint8 = 255
    var c int16 = -32768
    var d uint16 = 65535
    var e int32 = -2147483648
    var f uint32 = 4294967295
    var g int64 = -9223372036854775808
    var h uint64 = 18446744073709551615

    fmt.Println(a, b, c, d, e, f, g, h)
}

Trong ví dụ trên, chúng ta khai báo các biến số nguyên với các kích thước khác nhau và in ra giá trị của chúng.

2. Số Thực (Floating-Point Numbers)

Số thực là các số có phần thập phân. Trong Go, số thực được chia thành hai loại: float32float64. Số thực 64-bit (float64) có độ chính xác cao hơn và là kiểu mặc định nếu không chỉ định rõ ràng.

Ví dụ:

package main

import "fmt"

func main() {
    var x float32 = 3.14
    var y float64 = 2.718281828459045

    fmt.Println(x, y)
}

Trong ví dụ này, chúng ta khai báo các biến số thực với các kích thước khác nhau và in ra giá trị của chúng.

3. Số Phức (Complex Numbers)

Số phức bao gồm một phần thực và một phần ảo. Trong Go, số phức được chia thành hai loại: complex64complex128.

Ví dụ:

package main

import "fmt"

func main() {
    var z1 complex64 = 1 + 2i
    var z2 complex128 = 3 + 4i

    fmt.Println(z1, z2)
}

Trong ví dụ này, chúng ta khai báo các biến số phức với các kích thước khác nhau và in ra giá trị của chúng.

4. Chuỗi (Strings)

Chuỗi là một dãy các ký tự. Trong Go, chuỗi là bất biến, nghĩa là một khi chuỗi được tạo ra, giá trị của nó không thể thay đổi.

Ví dụ:

package main

import "fmt"

func main() {
    var s1 string = "Hello, World!"
    s2 := "Go is awesome!"

    fmt.Println(s1)
    fmt.Println(s2)
}

Trong ví dụ này, chúng ta khai báo các biến chuỗi và in ra giá trị của chúng.

5. Boolean

Kiểu dữ liệu boolean chỉ có hai giá trị: truefalse. Kiểu dữ liệu này thường được sử dụng trong các biểu thức điều kiện.

Ví dụ:

package main

import "fmt"

func main() {
    var b1 bool = true
    var b2 bool = false

    fmt.Println(b1)
    fmt.Println(b2)
}

Trong ví dụ này, chúng ta khai báo các biến boolean và in ra giá trị của chúng.

Các Kiểu Dữ Liệu Tổng Hợp

1. Mảng (Arrays)

Mảng là một tập hợp các phần tử có cùng kiểu dữ liệu và có kích thước cố định. Các phần tử trong mảng được truy cập thông qua chỉ số.

Ví dụ:

package main

import "fmt"

func main() {
    var arr [5]int = [5]int{1, 2, 3, 4, 5}
    fmt.Println(arr)

    // Truy cập phần tử trong mảng
    fmt.Println(arr[0])
    fmt.Println(arr[4])
}

Trong ví dụ này, chúng ta khai báo một mảng số nguyên và in ra các phần tử của nó.

2. Cấu Trúc (Structs)

Cấu trúc là một tập hợp các trường (fields) có thể có các kiểu dữ liệu khác nhau. Cấu trúc cho phép chúng ta nhóm các dữ liệu liên quan lại với nhau.

Ví dụ:

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func main() {
    var p Person
    p.Name = "John"
    p.Age = 30

    fmt.Println(p)
}

Trong ví dụ này, chúng ta khai báo một cấu trúc Person với hai trường NameAge, và in ra giá trị của nó.

Các Kiểu Dữ Liệu Tham Chiếu

1. Con Trỏ (Pointers)

Con trỏ là một biến lưu trữ địa chỉ của một biến khác. Con trỏ cho phép chúng ta làm việc trực tiếp với địa chỉ bộ nhớ.

Ví dụ:

package main

import "fmt"

func main() {
    var x int = 10
    var p *int = &x

    fmt.Println("Giá trị của x:", x)
    fmt.Println("Địa chỉ của x:", p)
    fmt.Println("Giá trị tại địa chỉ của p:", *p)
}

Trong ví dụ này, chúng ta khai báo một biến con trỏ p trỏ đến biến x và in ra giá trị của chúng.

2. Slice

Slice là một kiểu dữ liệu tham chiếu đến một phần của mảng. Slice linh hoạt hơn mảng vì có thể thay đổi kích thước.

Ví dụ:

package main

import "fmt"

func main() {
    var s []int = []int{1, 2, 3, 4, 5}
    fmt.Println(s)

    // Thêm phần tử vào slice
    s = append(s, 6)
    fmt.Println(s)
}

Trong ví dụ này, chúng ta khai báo một slice số nguyên và thêm phần tử vào slice.

3. Bản Đồ (Maps)

Bản đồ là một tập hợp các cặp khóa-giá trị. Khóa và giá trị có thể có các kiểu dữ liệu khác nhau.

Ví dụ:

package main

import "fmt"

func main() {
    var m map[string]int = map[string]int{"one": 1, "two": 2, "three": 3}
    fmt.Println(m)

    // Truy cập giá trị trong bản đồ
    fmt.Println(m["two"])

    // Thêm một cặp khóa-giá trị mới
    m["four"] = 4
    fmt.Println(m)
}

Trong ví dụ này, chúng ta khai báo một bản đồ với các cặp khóa-giá trị và in ra giá trị của chúng.

Các Kiểu Dữ Liệu Giao Diện

Giao diện là một tập hợp các phương thức mà một kiểu dữ liệu phải triển khai. Giao diện cho phép chúng ta định nghĩa các hành vi mà các kiểu dữ liệu khác nhau có thể thực hiện.

Ví dụ:

package main

import "fmt"

type Animal interface {
    Speak() string
}

type Dog struct{}

func (d Dog) Speak() string {
    return "Woof!"
}

type Cat struct{}

func (c Cat) Speak() string {
    return "Meow!"
}

func main() {
    var a Animal

    a = Dog{}
    fmt.Println(a.Speak())

    a = Cat{}
    fmt.Println(a.Speak())
}

Trong ví dụ này, chúng ta khai báo một giao diện Animal với phương thức Speak, và hai kiểu dữ liệu DogCat triển khai giao diện này.

Kết Luận

Kiểu dữ liệu là một phần quan trọng trong lập trình Go, giúp xác định loại giá trị mà một biến có thể lưu trữ và các phép toán có thể thực hiện trên giá trị đó. Bài viết này đã cung cấp một cái nhìn tổng quan chi tiết về các kiểu dữ liệu trong Go, bao gồm các kiểu dữ liệu cơ bản, kiểu dữ liệu tổng hợp, kiểu dữ liệu tham chiếu, và kiểu dữ liệu giao diện, cùng với các ví dụ minh họa cụ thể. Hiểu rõ về các kiểu dữ liệu này sẽ giúp bạn viết mã Go hiệu quả và dễ bảo trì hơn.

Avatar
Được viết bởi

TechMely Team

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

entry

Liệt kê các kiểu dữ liệu trong Python?

entry

Liệt kê các kiểu dữ liệu được định nghĩa sẵn trong Typescript.

entry

Javascript có các kiểu dữ liệu nào? Bạn biết gì về chúng

Bình luận

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

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