내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
함수 통과func
키워드 정의, 함수 이름, 매개변수 목록, 반환 유형이 이어집니다. 구문은 다음과 같습니다.
func functionName(parameters) returnType {
// 函数体
}
func add(x int, y int) int {
return x + y
}
func swap(x, y string) (string, string) {
return y, x
}
func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}
s := (func () string {
return "anonymous-function"
})()
fmt.Println(s)
함수는 매개변수로 전달되거나 반환 값으로 전달될 수도 있습니다.
// 函数作为参数
func compute(fn func(float64, float64) float64) float64 {
return fn(3, 4)
}
// 函数作为返回值
func getComputeFunc() func(int, int) int {
return func(x, y int) int {
return x + y
}
}
func intSeq() func() int {
i := 0
return func() int {
i++
return i
}
}
// 调用
func main() {
incfunc := intSeq()
fmt.Println(incfunc())
fmt.Println(incfunc())
}
폐쇄의 본질은 범위의 확장이다.
예를 들어 intSeq의 i는 다른 곳에서 참조되지 않으면 가비지 수집됩니다. 그러나 incfunc에 참조가 있기 때문에 수명 주기가 길어지고 범위가 확장됩니다.