0
0
Lập trình
Admin Team
Admin Teamtechmely

Phần 4: Tìm hiểu về Golang - Con Trỏ, Cấu Trúc, Mảng, Slice và Bản Đồ

Đăng vào 2 ngày trước

• 3 phút đọc

Chủ đề:

golangMayFest2024

Giới thiệu

Trong bài viết này, chúng ta sẽ khám phá những cấu trúc biến quan trọng trong Golang, bao gồm Con Trỏ (Pointer), Cấu Trúc (Struct), Slice và Bản Đồ (Map). Đây là những khái niệm cơ bản và thường xuyên được sử dụng trong các bài toán lập trình thực tế. Bài viết sẽ có phần dài, vì vậy hãy chuẩn bị để tiếp thu những kiến thức hữu ích nào! 😄

Nội dung

1. Con Trỏ (Pointer)

Con trỏ là một trong những khái niệm quan trọng mà những ai đã từng học ngôn ngữ lập trình C/C++ đều biết. Con trỏ không lưu trữ giá trị cụ thể mà thay vào đó lưu trữ địa chỉ của một biến trong bộ nhớ RAM.

Khai báo Con Trỏ

  • Khai báo con trỏ mà không gán địa chỉ:

    go Copy
    func main() {
        var p *int
        fmt.Println("p = ", p) // Output: p = <nil>
    }
  • Khai báo và gán địa chỉ:

    go Copy
    var i = 10
    var p = &i // p lưu địa chỉ của biến i
  • Truy cập giá trị qua Con Trỏ:

    go Copy
    fmt.Println(*p) // Hiển thị giá trị của i thông qua p
    *p = 21         // Thay đổi giá trị của i thông qua p

Ví dụ tổng quát:

go Copy
package main

import "fmt"

func main() {
    var a = 10
    var p = &a
    fmt.Println("a = ", a) // 10
    fmt.Println("p = ", p) // Địa chỉ của a
    fmt.Println("*p = ", *p) // 10

    *p = 20
    fmt.Println("a (after) = ", a) // 20
}

Kết quả:

Copy
a =  10
p =  0xc00001d0d0
*p =  10
a (after) =  20

2. Cấu Trúc (Struct)

Cấu trúc là một tập hợp các trường dữ liệu, cho phép bạn nhóm các loại dữ liệu lại với nhau.

Ví dụ về Cấu Trúc:

go Copy
package main

import "fmt"

type Vertex struct {
    X int
    Y int
}

func main() {
    v := Vertex{1, 2}
    fmt.Println(v) // Output: {1 2}
}

Truy cập các trường của Cấu Trúc:

go Copy
v.X = 4 // Thay đổi giá trị của X
fmt.Println(v.X) // Output: 4

Con Trỏ đến Cấu Trúc:

go Copy
p := &v
p.X = 3
fmt.Println(v) // Output: {3 2}

3. Mảng (Arrays)

Mảng trong Go được khai báo với cú pháp: [n]T, nơi n là số lượng phần tử và T là kiểu dữ liệu. Độ dài mảng không thể thay đổi.

Ví dụ về Mảng:

go Copy
package main

import "fmt"

func main() {
    var a [2]string
    a[0] = "Hello"
    a[1] = "Golang"
    fmt.Println(a) // Output: [Hello Golang]
}

4. Slice

Slice là một mảng có kích thước linh hoạt, cho phép bạn thao tác với một phần của mảng.

Khai báo Slice:

go Copy
primes := [6]int{2, 3, 5, 7, 11, 13}
var s []int = primes[1:4]
fmt.Println(s) // Output: [3 5 7]

Thay đổi phần tử trong Slice:

go Copy
b[0] = "XXX"

5. Bản Đồ (Maps)

Bản đồ là kiểu dữ liệu cho phép ánh xạ giữa khóa và giá trị. Mỗi khóa trong bản đồ là duy nhất.

Khai báo và sử dụng Bản Đồ:

go Copy
ages := make(map[string]int)
ages["Alice"] = 30
fmt.Println("Tuổi của Alice là:", ages["Alice"])

Kết luận

Bài viết này đã cung cấp cho bạn cái nhìn tổng quan về các khái niệm Con Trỏ, Cấu Trúc, Mảng, Slice và Bản Đồ trong Golang. Hy vọng rằng những kiến thức này sẽ giúp ích cho bạn trong hành trình học tập ngôn ngữ lập trình Golang. Trong bài tiếp theo, chúng ta sẽ khám phá về Methods và Interfaces. Nếu bạn có câu hỏi hay ý kiến đóng góp, hãy để lại comment bên dưới nhé! Hẹn gặp lại trong các bài viết tiếp theo của series Golang Essentials: Nền Tảng và Kiến Thức Cơ Bản!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

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

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