Hàm là trường trong Golang

Thứ hai - 05/05/2025 00:03

Trong Golang, bạn có thể định nghĩa các hàm như các trường trong một cấu trúc (struct). Tính năng này cho phép bạn liên kết hành vi (phương thức) trực tiếp với các kiểu dữ liệu, cho phép quản lý dữ liệu và các hoạt động liên quan theo cách có tổ chức và đóng gói hơn.

 


Hàm làm trường trong Golang

Ví dụ:

package main
import "fmt"
// Định nghĩa một cấu trúc chưa hàm làm trương
type Person struct {
    Name  string
    Greet func() string
}
func main() {
    person := Person{
        Name: "A",
    }
    // Gán một chức năng cho trường Chào hỏi sau khi người được xác định
    person.Greet = func() string {
        return "Hello, " + person.Name
    }
    // Gọi trường hàm
    fmt.Println(person.Greet())
}

Cú pháp của hàm dưới dạng trường trong Golang

type StructName struct {
    Field1 FieldType
    FunctionField func() ReturnType
}

Cấu trúc với phương thức dưới dạng trường hàm

Bạn cũng có thể định nghĩa một struct method hoạt động như một trường hàm. Điều này cho phép struct có hành vi được liên kết trực tiếp với nó.

 

Cú pháp

type StructName struct {
    Field1 FieldType
    MethodField func() ReturnType
}

Ví dụ:

package main
import "fmt"
type Person struct {
    Name  string
    Greet func() string
}
func main() {
    person := Person{
        Name: "A",
    }
    // Gán chức năng chào hỏi sau khi người đó được xác định
    person.Greet = func() string {
        return "Hello, " + person.Name
    }
    // Gọi trường hàm
    fmt.Println(person.Greet())
}

Kết quả:

Hello, A

Cấu trúc với Trường hàm tham số

Bạn có thể định nghĩa một trường hàm chấp nhận tham số, cung cấp tính linh hoạt hơn trong cách hàm hoạt động.

Cú pháp

type StructName struct {
    Field1 FieldType
    MethodField func(param1 ParamType) ReturnType
}

Ví dụ:

package main
import "fmt"
type Person struct {
    Name  string
    Greet func(string) string
}
func main() {
    person := Person{
        Name: "B",
    }
    // Gán hàm greet sau khi xác định được người
    person.Greet = func(greeting string) string {
        return greeting + ", " + person.Name
    }
    // Gọi trường hàm bằng 1 tham số
    fmt.Println(person.Greet("Hi"))
}

Kết quả:

Hi, B

Cấu trúc với các trường đa hàm

Bạn cũng có thể định nghĩa nhiều trường hàm trong một struct duy nhất để đóng gói nhiều hành vi khác nhau.

Cú pháp

type StructName struct {
    Field1 FieldType
    MethodField1 func() ReturnType
    MethodField2 func(param1 ParamType) ReturnType
}

Ví dụ:

package main
import "fmt"
type Person struct {
    Name     string
    Greet    func(string) string
    Farewell func() string
}
func main() {
    person := Person{
        Name: "C",
    }
    // Gane hàm greet và farewell sau khi xác định người
    person.Greet = func(greeting string) string {
        return greeting + ", " + person.Name
    }
    person.Farewell = func() string {
        return "Goodbye, " + person.Name
    }
    // Gọi các trường hàm
    fmt.Println(person.Greet("Hello"))
    fmt.Println(person.Farewell())
}

Kết quả:

Hello, C
Goodbye, C
 

Nguồn tin: Quantrimang.com:

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

  Ý kiến bạn đọc

THỐNG KÊ TRUY CẬP
  • Đang truy cập79
  • Máy chủ tìm kiếm1
  • Khách viếng thăm78
  • Hôm nay9,746
  • Tháng hiện tại18,588
  • Tổng lượt truy cập11,804,975
QUẢNG CÁO
Phan Thanh Phú
Quảng cáo 2
Liên kết site
Đăng nhập Thành viên
Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site
Thăm dò ý kiến

Bạn thấy Website cần cải tiến những gì?

Lịch Âm dương
Máy tính
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây