ホームページ >バックエンド開発 >Golang >Golang でカスタム型を作成するときのベスト プラクティスは何ですか?

Golang でカスタム型を作成するときのベスト プラクティスは何ですか?

WBOY
WBOYオリジナル
2024-06-02 16:43:00425ブラウズ

Go でカスタム型を作成するときに次のベスト プラクティスに従うと、コードの品質を向上させることができます: 最初の文字を大文字にする、推奨される型エイリアスを使用する、構造体を使用する、重複を避けるために埋め込みを使用する、インターフェイスを実装する。これらの実践により、実際の例で示したショッピング カート タイプのように、組織化、可読性、保守性が向上します。

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

Go でカスタム型を作成する際のベスト プラクティス

Go でカスタム型を作成すると、コードの構成、可読性、保守性が向上します。いくつかのベスト プラクティスに従うことで、カスタム タイプが適切に設計され、効果的であることを確認できます。

最初の文字を大文字にする

Go の規則に従って、カスタム型名の最初の文字は大文字にする必要があります。これは、カスタム タイプを他の識別子から区別するのに役立ちます。

type Customer struct {
    // ...
}

type Order struct {
    // ...
}

推奨型エイリアスを使用する

よく使用される組み込み型については、推奨型エイリアスを使用することをお勧めします。たとえば、エラーの場合は、interface{} の代わりに error タイプのエイリアスを使用します。 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
}

struct を使用する

複数のフィールドを持つカスタム データ型を表すには、struct を使用します。関連するフィールドを struct にグループ化すると、コードの可読性と保守性が向上します。

type Shape interface {
    Area() float64
}

type Rectangle struct {
    Width  float64
    Height float64
}

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

重複を避けるために埋め込みを使用してください

複数のカスタム タイプに同じサブセット フィールドがある場合、embed を使用して、共有フィールドをタイプの 1 つに埋め込むことができます。これにより、コードの重複が回避され、コードがクリーンな状態に保たれます。

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

インターフェースの実装

🎜🎜インターフェースを実装すると、カスタムタイプに追加機能を持たせることができます。これは、インターフェイス メソッドのシグネチャを満たす型メソッドを定義することで実現できます。 🎜rrreee🎜🎜実用的なケース🎜🎜🎜ショッピング バスケットを表すカスタム タイプを作成しましょう: 🎜rrreee🎜このカスタム タイプはショッピング カートのデータをカプセル化し、複数のアイテムの管理と合計価格の計算のプロセスを簡素化します。 🎜

以上がGolang でカスタム型を作成するときのベスト プラクティスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。