Dalam Golang , struktur (atau struct) membenarkan kami mengumpulkan elemen daripada jenis yang berbeza ke dalam satu unit, yang berguna untuk memodelkan entiti dunia sebenar. Struktur tanpa nama di Golang ialah struktur sementara tanpa nama yang digunakan untuk tujuan sekali sahaja, manakala medan tanpa nama membenarkan pembenaman medan tanpa nama.

Contohnya:
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)
}
Sintaks:
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
}
Struktur Tanpa Nama dalam Go
Struktur tanpa nama dalam Go ditakrifkan tanpa nama dan berguna untuk mencipta struktur boleh guna sementara. Berikut ialah contoh sintaks dan kod.
Sintaks:
variable := struct {
field1 dataType1
field2 dataType2
// Các trường bổ sung khi cần
}{value1, value2}
Contohnya:
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)
}
Keputusan:
Name: A
Enrollment: 12345
GPA: 3.8
Kod ini mentakrifkan struktur Pelajar dengan struktur Butiran peribadi tanpa nama di dalamnya, menyimpan nama dan maklumat pendaftaran. Kemudian mulakan pelajar dengan nilai untuk medan ini dan cetaknya.
Medan tanpa nama
Medan tanpa nama dalam Go membolehkan anda mentakrifkan medan tanpa nama yang jelas, hanya jenisnya ditentukan. Ini berguna apabila medan mengikut nama jenis secara semula jadi.
Sintaks
type StructName struct {
dataType1
dataType2
// Additional anonymous fields
}
Contohnya:
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)
}
Keputusan:
Enrollment: 12345
Name: A
GPA: 3.8
Di sini, jenis data ( int, string, float64 ) bertindak sebagai nama medan, jadi mengakses nilai bergantung pada jenis.
Perkara Penting yang Perlu Diingati Mengenai Medan Tanpa Nama di Golang
1. Keperluan unik: Anda tidak boleh menggunakan dua medan daripada jenis yang sama dalam satu struktur. Contohnya:
type InvalidStudent struct {
int
int // Error: duplicate type
}
2. Menggabungkan medan bernama dan tanpa nama: Anda boleh menggabungkan medan tanpa nama dan bernama dalam struktur.
type Student struct {
id int // Named field
int // Anonymous field
}