• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

이것도 closure인가요?

22.07.27 13:07 작성 조회수 128

0

안녕하세요 선생님.

 

go에서 closure를 처음 접하였고 아직 모르는 부분이 있어 이렇게 질문드리게 되었씁니다.

 

익명함수로 외부에 있는 변수에 접근하는게 가능한 이유는 go가 closure를 지원하기 때문인가요?

밑의 defer를 예로하면 2번은 closure로 s 에 접근하고 있고 3번은 파라메타로 접근이라고 이해하면 될까요?

 

package main

import (
	"errors"
	"fmt"
)


type stmt struct {}

func (s *stmt) close() error{
	return errors.New("error occuerd!")
}

func main() {
	s := stmt{}

	// 1번
	defer s.close()

	// 2번
	defer func() {
		err := s.close()
		if err != nil {
			fmt.Println(err)
		}
	}()

	// 3번
	defer func(s stmt) {
		err := s.close()
		if err != nil {
			fmt.Println(err)
		}
	}(s)
}

 

답변 1

답변을 작성해보세요.

0

네 맞습니다.

해당 영역의 스코프의 변수의 값을 저장하고 활용하고 있네요!