Go 언어 함수 디자인 패턴은 다음을 포함하여 코드 가독성, 유지 관리성 및 재사용성을 향상시키는 데 사용됩니다. 입력/출력 매개변수: 함수가 매개변수를 통해 호출자의 값을 수정할 수 있도록 합니다. 여러 값 반환: 코드를 단순화하고 전역 변수 사용을 피하세요. 매개변수로서의 기능: 유연하고 사용자 정의 가능한 코드를 생성합니다.
이 글에서는 코드의 가독성, 유지 관리성 및 재사용성을 향상시킬 수 있는 Go 언어의 일반적인 함수 디자인 패턴을 소개합니다.
입력/출력 매개변수를 사용하면 함수가 매개변수를 통해 호출자의 값을 수정할 수 있습니다. 예를 들어, 함수에서 두 값의 순서를 바꿀 수 있습니다:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!