Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah amalan terbaik semasa membuat jenis tersuai di Golang?

Apakah amalan terbaik semasa membuat jenis tersuai di Golang?

WBOY
WBOYasal
2024-06-02 16:43:00355semak imbas

Mengikuti amalan terbaik berikut semasa membuat jenis tersuai dalam Go boleh meningkatkan kualiti kod: gunakan huruf besar pertama, gunakan alias jenis yang disyorkan, gunakan struct, gunakan benam untuk mengelakkan pertindihan, laksana antara muka. Amalan ini meningkatkan organisasi, kebolehbacaan dan kebolehselenggaraan, seperti jenis troli beli-belah yang ditunjukkan dalam contoh praktikal.

使用 Golang 创建自定义类型时的最佳实践有哪些?

Amalan terbaik semasa membuat jenis tersuai dalam Go

Mencipta jenis tersuai dalam Go boleh meningkatkan organisasi, kebolehbacaan dan kebolehselenggaraan kod anda. Mengikuti beberapa amalan terbaik boleh memastikan bahawa jenis tersuai anda direka bentuk dengan baik dan berkesan.

Huruf besar huruf pertama

Mengikut konvensyen Go, huruf pertama nama jenis tersuai hendaklah menggunakan huruf besar. Ini membantu membezakan jenis tersuai daripada pengecam lain.

type Customer struct {
    // ...
}

type Order struct {
    // ...
}

Gunakan alias jenis yang disyorkan

Untuk jenis terbina dalam yang biasa digunakan, adalah disyorkan untuk menggunakan alias jenis yang disyorkan. Contohnya, untuk ralat, gunakan alias jenis ralat bukannya antara muka{}. error 类型别名而不是 interface{}

type MyError struct {
    msg string
}

func (e MyError) Error() string {
    return e.msg
}

func CheckSomething() error {
    // ...
}

使用 struct

使用 struct 来表示具有多个字段的自定义数据类型。将相关字段组合到一个 struct 中可以提高代码的可读性和可维护性。

type Person struct {
    Name    string
    Age     int
    Address string
}

使用 embed 来避免重复

当多个自定义类型具有相同的子集字段时,可以使用 embed

type Person struct {
    Name    string
    Age     int
    Contact Information
}

type Information struct {
    Address string
    Phone   string
}

Gunakan struct

Gunakan struct untuk mewakili jenis data tersuai dengan berbilang medan. Mengumpulkan medan berkaitan ke dalam struct boleh meningkatkan kebolehbacaan dan kebolehselenggaraan kod.

type Shape interface {
    Area() float64
}

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

Gunakan benam untuk mengelakkan pertindihan

Apabila berbilang jenis tersuai mempunyai medan subset yang sama, anda boleh menggunakan benamkan untuk membenamkan medan kongsi ke dalam salah satu jenis. Ini mengelakkan pertindihan kod dan memastikan kod bersih.

type Cart struct {
    Items      []Item
    TotalPrice float64
}

type Item struct {
    Name  string
    Price float64
    Qty   int
}

func main() {
    // 创建购物车
    cart := &Cart{}

    // 向购物车添加物品
    item1 := Item{Name: "Apple", Price: 1.0, Qty: 1}
    item2 := Item{Name: "Banana", Price: 1.5, Qty: 2}
    cart.Items = append(cart.Items, item1, item2)

    // 计算总价
    for _, item := range cart.Items {
        cart.TotalPrice += item.Price * float64(item.Qty)
    }

    // 打印购物车内容
    fmt.Printf("Shopping cart contents:\n\n")
    for _, item := range cart.Items {
        fmt.Printf("%s (%dx): $%.2f\n", item.Name, item.Qty, item.Price)
    }

    // 打印总价
    fmt.Printf("\nTotal price: $%.2f\n", cart.TotalPrice)
}

Melaksanakan antara muka

🎜🎜Melaksanakan antara muka membolehkan jenis tersuai mempunyai fungsi tambahan. Ini boleh dicapai dengan menentukan kaedah jenis yang memenuhi tandatangan kaedah antara muka. 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜Mari kami cipta jenis tersuai yang mewakili bakul beli-belah: 🎜rrreee🎜Jenis tersuai ini merangkum data troli beli-belah, memudahkan proses mengurus berbilang item dan mengira jumlah harga. 🎜

Atas ialah kandungan terperinci Apakah amalan terbaik semasa membuat jenis tersuai di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn