Go 言語の関数設計パターンは、コードの可読性、保守性、再利用性を向上させるために使用されます。次のものが含まれます。 入出力パラメータ: 関数がパラメータを通じて呼び出し元の値を変更できるようにします。複数の値を返す: コードを簡素化し、グローバル変数の使用を避けます。パラメーターとしての関数: 柔軟でカスタマイズ可能なコードを作成します。
この記事では、コードの読みやすさを向上させる、Go 言語の一般的な関数設計パターンを紹介します。メンテナンス性と再利用性。
入力/出力パラメータを使用すると、関数はパラメータを通じて呼び出し元の値を変更できます。たとえば、関数内で 2 つの値の順序を交換できます:
func swap(a, b *int) { *a, *b = *b, *a }
実用的なケース: 並べ替え用の補助関数:
func sort(arr []int) { for i := 0; i < len(arr); i++ { for j := i + 1; j < len(arr); j++ { if arr[i] > arr[j] { swap(&arr[i], &arr[j]) } } } }
Go 言語では、関数が複数の値を返すことができます。これによりコードが簡素化され、グローバル変数の使用が回避されます。たとえば、配列から最小値と最大値を取得する関数を使用できます:
func minMax(arr []int) (int, int) { min := arr[0] max := arr[0] for _, v := range arr { if v < min { min = v } if v > max { max = v } } return min, max }
実際のケース: 統計を計算する関数:
func stats(arr []int) (float64, float64) { sum := 0 for _, v := range arr { sum += v } average := float64(sum) / float64(len(arr)) return average, float64(minMax(arr)[0] + minMax(arr)[1]) / 2 }
Go 関数はパラメータとして他の関数に渡すことができます。これにより、柔軟でカスタマイズ可能なコードを作成できます。たとえば、関数をコンパレータ関数として使用できます:
type Person struct { Name string Age int } func compareByName(a, b Person) int { return strings.Compare(a.Name, b.Name) } func sortByName(people []Person) { sort.Slice(people, func(i, j int) bool { return compareByName(people[i], people[j]) < 0 }) }
実用的な例: さまざまなフィールドに従って構造をスライスするためのユニバーサル ソート関数:
func sortBy(slice interface{}, less func(i, j interface{}) bool) { sort.Slice(slice, func(i, j int) bool { return less(slice[i], slice[j]) }) }
以上がgolang 関数の一般的な設計パターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。