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.

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, ACấ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, BCấ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 Học IT
 Học IT  
  
  
  
  
  
  
  
  
 










 Công nghệ
 Công nghệ  Nền tảng Web
 Nền tảng Web  Microsoft Word 2013
 Microsoft Word 2013  Microsoft Word 2007
 Microsoft Word 2007  Microsoft Excel 2019
 Microsoft Excel 2019  Microsoft Excel 2016
 Microsoft Excel 2016  Microsoft PowerPoint 2019
 Microsoft PowerPoint 2019  Microsoft PowerPoint 2016
 Microsoft PowerPoint 2016  Google Sheets
 Google Sheets  Học Python
 Học Python  HTML
 HTML  Lập trình Scratch
 Lập trình Scratch  CSS và CSS3
 CSS và CSS3  Lập trình C
 Lập trình C  Lập trình C++
 Lập trình C++  Lập trình C#
 Lập trình C#  Học PHP
 Học PHP  Bootstrap
 Bootstrap  SQL Server
 SQL Server  JavaScript
 JavaScript  Unix/Linux
 Unix/Linux  Khoa học vui
 Khoa học vui  Khám phá khoa học
 Khám phá khoa học  Bí ẩn - Chuyện lạ
 Bí ẩn - Chuyện lạ  Sức khỏe
 Sức khỏe  Vũ trụ
 Vũ trụ  Khám phá thiên nhiên
 Khám phá thiên nhiên  Bảo vệ Môi trường
 Bảo vệ Môi trường  Phát minh Khoa học
 Phát minh Khoa học  Tết 2025
 Tết 2025  Video
 Video  Hướng dẫn
 Hướng dẫn  Công nghệ
 Công nghệ  Khoa học
 Khoa học  Ô tô, Xe máy
 Ô tô, Xe máy  Tổng hợp
 Tổng hợp