Anonymous structures and fields in Golang
In Golang , structures (or structs) allow us to group elements of different types into a single unit, which is useful for modeling real-world entities. Anonymous structures in Golang are temporary structures without names that are used for one-time purposes, while anonymous fields allow embedding of unnamed fields.

For example:
package main import "fmt" // struct học sinh với cấu trúc và trường ẩn danh type Student struct { struct { // Cấu trúc bên trong ẩn danh cho thông tin cá nhân name string enrollment int } GPA float64 // Trường chuẩn } func main() { student := Student{ struct { name string enrollment int }{ name: "A", enrollment: 12345, }, GPA: 3.8, } fmt.Println("Name:", student.name) fmt.Println("Enrollment:", student.enrollment) fmt.Println("GPA:", student.GPA) }
Syntax:
variable := struct { field1 dataType1 field2 dataType2 # Cấu trúc ẩn danh // Trường bổ sung khi cần }{value1, value2} type StructName struct { dataType1 dataType2 # Trường ẩn danh // Trường ẩn danh bổ sung }
Anonymous Structures in Go
Anonymous structures in Go are defined without a name and are useful for creating temporary, disposable structures. Here is the syntax and code example.
Syntax:
variable := struct { field1 dataType1 field2 dataType2 // Các trường bổ sung khi cần }{value1, value2}
For example:
package main import "fmt" // Cấu trúc sinh viên với cấu trúc bên trong ẩn danh cho thông tin cá nhân type Student struct { personalDetails struct { // Cấu trúc ẩn danh bên trong cho thông tin cá nhân name string enrollment int } GPA float64 // Trường chuẩn } func main() { // Khởi tạo cấu trúc bên trong cho student student := Student{ personalDetails: struct { name string enrollment int }{ name: "A", enrollment: 12345, }, GPA: 3.8, } // Hiện giá trị fmt.Println("Name:", student.personalDetails.name) fmt.Println("Enrollment:", student.personalDetails.enrollment) fmt.Println("GPA:", student.GPA) }
Result:
Name: A Enrollment: 12345 GPA: 3.8
This code defines a Student structure with an anonymous personalDetails structure inside, storing the name and registration information. It then initializes student with values for these fields and prints them out.
Anonymous fields
Anonymous fields in Go allow you to define fields without explicit names, only their types. This is useful when fields naturally follow the type name.
Syntax
type StructName struct { dataType1 dataType2 // Additional anonymous fields }
For example:
package main import "fmt" // Cấu trúc học sinh bằng các trường ẩn danh type Student struct { int // Số đăng ký (trường ẩn danh) string // Tên trường ẩn danh float64 // GPA (trường ẩn danh) } func main() { // Khởi tạo struct học sinh với các trường ẩn danh student := Student{12345, "A", 3.8} // Hiện giá trị fmt.Println("Enrollment:", student.int) fmt.Println("Name:", student.string) fmt.Println("GPA:", student.float64) }
Result:
Enrollment: 12345 Name: A GPA: 3.8
Here, the data types ( int, string, float64 ) act as field names, so accessing the values depends on the types.
Important Points to Remember About Anonymous Fields in Golang
1. Unique requirement: You cannot use two fields of the same type in a structure. For example:
type InvalidStudent struct { int int // Error: duplicate type }
2. Combining named and anonymous fields: You can combine anonymous and named fields in a structure.
type Student struct { id int // Named field int // Anonymous field }
You should read it
- What is Golang? Things you need to know about Golang programming language
- What is GoLang? How to install GoLang on Windows 10
- Difference between Go and C++
- Structural equality in Golang
- What is Golang? Why should you use Golang language?
- How to implement a graph data structure in Golang
- Nested Structure in Golang
- How to create basic program in Golang
- What is the difference between Go and Java?
- Difference between Go and Python
- How to Install Go on Windows
- The way Hacker uses to remain anonymous
Maybe you are interested
Steam finally has a native app for Macs running Apple M-series chips Top technology born that changed the world in the past decade What is SgrmBroker.exe? Is SgrmBroker.exe safe? Noel Stt for every mood How to connect Windows Server 2008 and Windows Vista to iSCSI server (Part 1) 15 things should not be in Mac OS X