Apakah amalan terbaik semasa membuat jenis tersuai di Golang?

WBOY
Lepaskan: 2024-06-02 16:43:00
asal
411 orang telah melayarinya

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 {
    // ...
}
Salin selepas log masuk

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 {
    // ...
}
Salin selepas log masuk

使用 struct

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

type Person struct {
    Name    string
    Age     int
    Address string
}
Salin selepas log masuk

使用 embed 来避免重复

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

type Person struct {
    Name    string
    Age     int
    Contact Information
}

type Information struct {
    Address string
    Phone   string
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan