Maison >développement back-end >Golang >Quelles sont les meilleures pratiques lors de la création de types personnalisés dans Golang ?

Quelles sont les meilleures pratiques lors de la création de types personnalisés dans Golang ?

WBOY
WBOYoriginal
2024-06-02 16:43:00425parcourir

Suivre les bonnes pratiques suivantes lors de la création de types personnalisés dans Go peut améliorer la qualité du code : mettre la première lettre en majuscule, utiliser les alias de type recommandés, utiliser struct, utiliser embed pour éviter la duplication, implémenter des interfaces. Ces pratiques améliorent l'organisation, la lisibilité et la maintenabilité, comme le type de panier présenté dans l'exemple pratique.

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

Bonnes pratiques lors de la création de types personnalisés dans Go

La création de types personnalisés dans Go peut améliorer l'organisation, la lisibilité et la maintenabilité de votre code. Le respect de certaines bonnes pratiques peut garantir que vos types personnalisés sont bien conçus et efficaces.

Mise en majuscule la première lettre

Selon la convention Go, la première lettre du nom du type personnalisé doit être en majuscule. Cela permet de distinguer les types personnalisés des autres identifiants.

type Customer struct {
    // ...
}

type Order struct {
    // ...
}

Utilisez les alias de type recommandés

Pour les types intégrés couramment utilisés, il est recommandé d'utiliser les alias de type recommandés. Par exemple, pour les erreurs, utilisez l'alias de type error au lieu de interface{}. 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
}

Utilisez struct

Utilisez struct pour représenter des types de données personnalisés avec plusieurs champs. Le regroupement des champs associés dans une struct peut améliorer la lisibilité et la maintenabilité du code.

type Shape interface {
    Area() float64
}

type Rectangle struct {
    Width  float64
    Height float64
}

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

Utilisez l'intégration pour éviter la duplication

Lorsque plusieurs types personnalisés ont les mêmes champs de sous-ensemble, vous pouvez utiliser embed pour intégrer les champs partagés dans l'un des types. Cela évite la duplication du code et maintient le code propre.

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)
}

Implémentation d'interfaces

🎜🎜L'implémentation d'interfaces permet aux types personnalisés d'avoir des fonctionnalités supplémentaires. Ceci peut être réalisé en définissant des méthodes de type qui satisfont à la signature de la méthode d'interface. 🎜rrreee🎜🎜Cas pratique🎜🎜🎜Créons un type personnalisé qui représente un panier : 🎜rrreee🎜Ce type personnalisé encapsule les données du panier, simplifiant le processus de gestion de plusieurs articles et de calcul du prix total. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn