고급 Golang 기능 기능: 클로저: 데이터 전달을 위해 주변 범위의 변수를 캡처합니다. Variadic 기능: 다양한 수의 매개변수를 허용합니다. 익명 함수: 이름이 지정되지 않은 일회성 콜백 또는 클로저. 고차 함수: 함수 매개변수를 받거나 반환합니다. Generics: 다양한 데이터 유형에 적용할 수 있는 범용 함수(Go 1.18에서 도입됨)
Golang 함수의 고급 기능
함수는 코드를 구성하는 강력한 방법입니다. Go 함수는 보다 모듈화되고 유지 관리 가능한 코드를 작성하는 데 도움이 되는 일련의 고급 기능을 제공합니다. 이 기사에서는 몇 가지 유용한 고급 기능을 소개하고 실제 사례를 통해 해당 기능을 적용하는 방법을 보여줍니다.
Closures
클로저는 주변 함수의 범위 변수를 캡처하는 함수입니다. 함수가 실행된 후 이러한 변수에 액세스할 수 있습니다. 이는 중첩된 함수나 콜백에 데이터를 전달해야 할 때 유용합니다.
func outer() func() int { count := 0 return func() int { count++ return count } } func main() { f := outer() fmt.Println(f()) // 1 fmt.Println(f()) // 2 }
Variadic 함수
Variadic 함수를 사용하면 가변 개수의 매개변수를 전달할 수 있습니다. 이는 다양한 소스의 데이터를 처리해야 할 때 유용합니다.
func sum(numbers ...int) int { total := 0 for _, num := range numbers { total += num } return total } func main() { fmt.Println(sum(1, 2, 3, 4, 5)) // 15 }
익명 함수
익명 함수는 명시적인 수신자가 없는 이름 없는 함수입니다. 일회성 콜백이나 클로저를 편리하게 정의하는 데 자주 사용됩니다.
func main() { // 定义一个匿名函数并传递给 sort.Slice sort.Slice([]int{1, 3, 2}, func(i, j int) bool { return []int{1, 3, 2}[i] < []int{1, 3, 2}[j] }) }
고차 함수
고차 함수는 함수를 매개변수로 받거나 함수를 반환하는 함수입니다. 이를 통해 런타임에 더욱 유연하고 사용자 정의 가능한 코드를 구축할 수 있습니다.
func add10(x int) int { return x + 10 } func mapValues(nums []int, f func(int) int) []int { result := make([]int, len(nums)) for i, num := range nums { result[i] = f(num) } return result } func main() { nums := []int{1, 2, 3, 4, 5} fmt.Println(mapValues(nums, add10)) // [11 12 13 14 15] }
Generics
Generics를 사용하면 다양한 데이터 유형에서 광범위하게 작동하는 함수를 작성할 수 있습니다. 제네릭은 Go 1.18에서 도입되었습니다.
func max[T comparable](a, b T) T { if a > b { return a } return b } func main() { fmt.Println(max(1, 2)) // 2 fmt.Println(max("hello", "world")) // world }
이것은 Golang 함수의 일부 고급 기능입니다. 이러한 기능은 클로저, 가변 함수, 익명 함수, 고차 함수 및 제네릭에 대한 지원을 제공하여 프로그래밍 효율성과 코드 품질을 크게 향상시킬 수 있습니다.
위 내용은 Golang 함수의 고급 기능 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!