>백엔드 개발 >Golang >Go는 명시적인 람다 구문 없이 어떻게 람다 표현 기능을 달성합니까?

Go는 명시적인 람다 구문 없이 어떻게 람다 표현 기능을 달성합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-17 19:34:111019검색

How Does Go Achieve Lambda Expression Functionality Without Explicit Lambda Syntax?

Go의 람다 표현식

다른 많은 프로그래밍 언어와 달리 Go의 구문에는 람다 표현식이 없습니다. 그러나 유사한 기능을 달성하는 대체 메커니즘을 제공합니다.

람다 표현식과 유사한 기능

Go의 익명 함수는 람다 표현식을 대체하는 역할을 합니다. 익명 함수는 특정 이름이 없는 함수이며 일반적으로 인라인 표현식으로 사용됩니다. 구문은 다음과 같습니다.

func(parameters) return_type {
    // function body
}

예를 들어 문자열을 반환하는 익명 함수를 정의하려면:

func() string {
  return "Stringy function"
}

실제 사용법

익명 함수는 변수에 할당되거나 다른 함수에 인수로 전달될 수 있으므로 유연한 코드 재사용 및 사용자 정의가 가능합니다. 다음 Go 코드를 고려해보세요.

type Stringy func() string

func foo() string {
  return "Stringy function"
}

func takesAFunction(foo Stringy) {
  fmt.Printf("takesAFunction: %v\n", foo())
}

func returnsAFunction() Stringy {
  return func() string {
    fmt.Printf("Inner stringy function\n")
    return "bar" // must return a string to be stringy
  }
}

func main() {
  takesAFunction(foo)
  f := returnsAFunction()
  f()
  baz := func() string {
    return "anonymous stringy\n"
  }
  fmt.Printf(baz())
}

이 예에서는 문자열을 반환하는 익명 함수를 정의하고 이를 변수 f에 할당합니다. 또한 변수 baz에 할당되는 익명 함수를 만듭니다. f와 baz 모두 명명된 함수처럼 호출할 수 있습니다.

위 내용은 Go는 명시적인 람다 구문 없이 어떻게 람다 표현 기능을 달성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.