Go 언어에서 fn은 구체적으로 func 키워드를 나타냅니다. 함수의 기본 구성 요소는 키워드 func, 함수 이름, 매개변수 목록, 반환 값, 함수 본문 및 반환 문입니다. 기본 코드 블록, 함수는 단일 또는 관련 기능을 구현하는 데 사용되는 구성되고 재사용 가능한 코드 세그먼트입니다.
이 튜토리얼의 운영 체제: Windows 10 시스템, GO 버전 1.20, Dell G3 컴퓨터
Go 언어 함수 선언(함수 정의)
함수는 구성되고 재사용 가능하며 코드 조각을 구현하는 데 사용됩니다. 애플리케이션 모듈성과 코드 재사용을 향상시키는 단일 또는 관련 기능. Go 언어는 일반 함수, 익명 함수 및 클로저를 지원하며, 기능을 보다 편리하게 사용할 수 있도록 설계부터 최적화 및 개선되었습니다.
함수는 코드 실행의 논리적 구조를 구성합니다. Go 언어에서 함수의 기본 구성 요소는 키워드 func, 함수 이름, 매개변수 목록, 반환 값, 함수 본문 및 반환 문입니다. 코드.
Go 언어는 컴파일된 언어이기 때문에 함수를 작성하는 순서는 상관이 없습니다. 가독성을 고려하여 파일 앞에 main() 함수를 작성하고, 그 외의 함수는 그 안에 작성하는 것이 가장 좋습니다. 특정 논리적 순서(예: 함수가 호출되는 순서)
여러 함수를 작성하는 주된 목적은 많은 코드 줄이 필요한 복잡한 문제를 일련의 간단한 작업으로 분해하여 해결하는 것입니다. 또한 동일한 작업(함수)을 여러 번 호출할 수 있으므로 코드 재사용에 도움이 됩니다(사실 무엇보다 좋은 프로그램은 DRY 원칙, 즉 특정 작업을 수행하는 코드가 프로그램에서 한 번만 나타날 수 있다는 것을 의미하는 Don't Repeat Yourself(Don't Repeat Yourself)에 크게 주목합니다.
함수는 코드 블록의 마지막 줄에 도달하거나 return 문 앞에 종료됩니다. return 문에는 0개 이상의 매개 변수가 있을 수 있으며 이러한 매개 변수는 호출자에 대한 반환 값으로 사용됩니다. for의 무한 루프를 종료하거나 코루틴(고루틴)을 종료하는 데에도 사용할 수 있습니다.
Go 언어 함수는 선언할 필요가 없습니다
Go 언어 함수는 변수와 마찬가지로 특정 변수에 할당될 수 있습니다(익명 함수가 등장한 이유)
함수는 일급 시민, 먼저 정의해야 함 모든 형식의 변수를 사용하여 함수 유형의 변수를 정의할 수 있습니다
var 变量名称 函数类型 var 变量名称 函数类型 = 匿名函数 var 变量名称 = 匿名函数 变量名称 := 匿名函数 var( var 变量名称 = 匿名函数 )
fn = func (a,b int){ return a + b } fn()
Go 언어에서 함수 변수를 정의하는 방법은 C 언어와 다릅니다
형식: func 함수 이름( 형식 매개변수 목록) 반환 값 목록 {}
Go 언어의 함수 반환 값은 둘 이상일 수 있습니다
func test(a,b int) (a,b int){ return a,b }
Go 언어 함수의 반환 값은 유형만 쓸 수도 있고, 변수 + 유형을 쓸 수도 있습니다
다음 유형만 작성하세요: func test(a,b int) (int){} 참고: Type만 작성하세요. 반환 값 유형 int의 양쪽에 있는 괄호는 생략할 수 있습니다.
변수와 유형: func test(a, b int) (a,b int){}
참고: 변수 + 유형의 형식을 작성할 때 return을 추가할 필요가 없습니다. 반환 값은 코드 블록에서 a와 b를 자동으로 검색합니다
func test(a,b int) (a,b int){ a = 100 b = 99 return //自动返回100,99}
유형이 Go 언어 형식 매개변수 목록 또는 반환 값 목록이 동일하면 다음과 같이 연속적으로 정의할 수 있습니다
: 두 함수가 동일한 메서드를 나타냅니다
func test(a,b int) (a,b int){return a,b} func test2(a int,b int) (int,int){return a,b}
Go 언어 때문에 함수는 여러 반환 값을 가질 수 있으므로 외부 world는 함수로부터 여러 개의 반환 값을 받기 때문에 이를 받기 위해서는 여러 개의 변수를 사용해야 합니다. 그러나 Go 언어에서는 변수를 사용하지 않으면 오류가 발생하므로 필요하지 않은 반환 값이 있으면 오류가 발생합니다. _를 사용하려면 _을 Go 언어에서 특정 의미를 가지므로 변수의 식별자로 사용할 수 없습니다
익명 함수
익명 함수는 이름이 없는 함수입니다. 그렇지 않으면 오류가 보고됩니다
익명 함수는 일반적으로 일급 시민이므로 함수의 형식 매개 변수 또는 함수의 반환 값으로 사용할 수 있습니다.
함수의 형식적 매개변수로서
fn := func (a,b int) int { return a + b } //此时调用test函数用来计算a+b可以这么写 res := test(a,b,fn) func test(a,b int,method func(int,int) int) func() { return method(a,b) }
더 발전된
fn과 익명 함수 할당이므로 익명 함수를 함수
//此时调用test函数用来计算a+b可以这么写 res := test(a,b,func (a,b int) int { return a + b }) func test(a,b int,method func(int,int) int) func() { return method(a,b) }
Closure(특수)의 반환 값으로 test
fn := test() fn()//打印匿名函数 func test() func() { return func() { fmt.Println("匿名函数") } }
에 직접 전달할 수 있습니다. 익명 함수)
반환된 익명 함수가 외부 변수를 사용하는 경우 이를 클로저라고 합니다
패키지의 닫힌 기능: "People in the Tower" 반환된 익명 함수가 외부 변수를 사용하는 한 익명 함수는 다음과 같습니다. 함수 호출 후에도 계속 사용되면 함수 스택은 해제되지 않습니다. 더 이상 사용하지 않으면 함수 스택이 해제됩니다
fn := test()//test函数也被称为迭代器 fn() //2 fn() //3 fn() //4 func test() func(){ x := 1 return func (){ x++ println(x) } }
익명 함수의 메모리 성능
Illustration
코드 영역 주소에 해당하는 세 가지 함수의 코드를 저장합니다
변수 fn을 정의하고 익명 함수의 주소를 fn에 전달합니다
함수 테스트를 호출하여 저장 공간을 엽니다
저장 공간을 엽니다 num, value, method, res의 경우, method는 전달된 함수의 주소를 저장하고
함수를 실행하고, method는 익명함수를 저장합니다. 메소드가 실행되면 저장공간이 열리고 값이 a와 b의 저장은 함수가 끝난 후 res에 값이 반환되고 메소드의 저장 공간이 해제됩니다
res가 인쇄되고, 테스트 기능도 공개되고, 사용 후 fn도 공개됩니다
위 내용은 Go 언어에서 fn은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!