Go 언어에서 익명 함수를 정의하는 방법은 무엇입니까?

青灯夜游
풀어 주다: 2023-01-06 19:37:13
원래의
3787명이 탐색했습니다.

Go 언어의 익명 함수 정의 방법은 "func(매개변수 목록)(반환 매개변수 목록){함수 본문}"입니다. 실제로 익명 함수의 정의는 이름이 없는 일반적인 함수 정의입니다. 익명 함수는 완전히 유형으로 간주될 수 있고, 직접 할당할 수 있고, 변수에 할당할 수 있으며, 실제 매개변수나 반환 값으로 사용할 수 있으며, 물론 직접 호출할 수도 있습니다.

Go 언어에서 익명 함수를 정의하는 방법은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.

Go 언어는 익명 함수를 지원합니다. 즉, 함수를 사용해야 할 때 정의합니다. 익명 함수에는 함수 이름이 없으며 함수 본문만 함수 유형의 변수에 유형으로 할당될 수 있습니다. 변수로 전달됩니다. 이는 C 언어의 콜백 함수와 유사합니다. 차이점은 Go 언어가 언제든지 코드에서 익명 함수 정의를 지원한다는 것입니다.

익명 함수란 함수 이름 정의가 필요 없는 함수 구현 방법을 말합니다. 다음은 함수 이름이 없는 함수 선언부로 구성됩니다.

익명 함수 정의

익명 함수의 정의 형식은 다음과 같습니다.

func(参数列表)(返回参数列表){
    函数体
}
로그인 후 복사

익명 함수의 정의는 이름이 없는 일반 함수 정의입니다.

기본 사용법

익명함수는 타입으로 간주할 수도 있고, 직접 할당할 수도 있고, 변수에 할당할 수도 있고, 실제 매개변수나 반환값으로 사용할 수도 있으며, 물론 직접 호출할 수도 있습니다.

1 ) 정의된 경우 익명 함수 호출

익명 함수는 선언 후에 호출할 수 있습니다. 예:

func(data int) {
    fmt.Println("hello", data)
}(100)
로그인 후 복사

3행 뒤에 (100)이 표시되어 익명 함수가 호출되고 전달된 매개변수는 다음과 같습니다. 100.

2) 변수에 익명 함수 할당

익명 함수에는 값을 할당할 수 있습니다. 예:

// 将匿名函数体保存到f()中
f := func(data int) {
    fmt.Println("hello", data)
}
// 使用f()调用
f(100)
로그인 후 복사

익명 함수는 그 자체로 매우 다재다능하며 콜백을 구현하기 위해 다양한 컨테이너에 쉽게 저장할 수 있습니다. 함수 및 작업 캡슐화.

익명 함수를 사용하는 곳

콜백 함수

왜 콜백 함수를 사용해야 할까요? A가 메인 함수이고 B가 메인 함수에 매개변수로 전달되는 것으로 분석해 보겠습니다. 위의 예를 사용할 수 있습니다. 메인 함수를 정의할 때 함수 B의 매개변수와 반환 값 유형만 정의했습니다. 그러면 함수 B가 우리가 정의한 유형을 충족하는 한 함수 A가 이를 처리할 수 있으므로 콜백을 사용합니다. 기능을 사용하면 더욱 다양한 기능을 사용할 수 있습니다. 일반인의 관점에서 보면 main 함수는 인터페이스를 제공하며 이 인터페이스의 규칙을 따르는 모든 함수를 사용할 수 있습니다.

type Callback func(a, b int) int

// 提供接口,外部随便怎么搞,只要符合规则就行
func api(x,y int, callback Callback) int {
    return callback(x, y)
}

// 回调函数,只要满足传入参数类型为int
// 并且返回值类型也是int就都可以
func add(a, b int) int {
    return a + b
}
로그인 후 복사

클로저

클로저란 무엇인가요? 클로저는 함수와 관련 참조 환경으로 구성된 엔터티입니다.

func add() func(int) int {
    var b int
    return func(a int) int {
        b = b + a
        return b
    }
}

var f = add()
로그인 후 복사

여기서 f는 함수 내부에 익명 함수를 사용하여 변수와 관련된 모든 것을 처리합니다

[관련 권장 사항:

Go 비디오 튜토리얼

, 프로그래밍 교육]

위 내용은 Go 언어에서 익명 함수를 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿