closure
-
golang: 루프 변수의 스코프 이슈(Fixing For Loops in Go 1.22)Back-End/Golang 2024. 8. 5. 12:46
이 글은 https://go.dev/blog/loopvar-preview 주제를 다룹니다. 문제 설명루프 변수의 스코프 문제Go에서 for 루프는 반복문 내에서 루프 변수를 사용합니다. 하지만 기존의 Go 버전에서는 루프 변수의 스코프가 루프 전체에 걸쳐 있기 때문에, 개발자가 의도하지 않게 루프 변수가 변경되는 상황이 발생할 수 있습니다. 이 문제는 특히 **고루틴(goroutine)**이나 **클로저(closure)**를 사용할 때 더욱 두드러지며, 예측하지 못한 동작을 초래할 수 있습니다.예시 코드 및 문제점2. 고루틴 사용 예시func main() { done := make(chan bool) values := []string{"a", "b", "c"} for _, v := ran..
-
클로저(Closure)란?Back-End/Language 2024. 4. 5. 11:33
Go 언어에서의 클로저(Closure)는 JavaScript의 클로저와 유사한 개념을 가지고 있습니다. 둘 다 외부 함수로부터 생성된 내부 함수가 그 외부 함수의 스코프에 있는 변수에 접근할 수 있게 해주는 프로그래밍 기능입니다. 하지만 언어의 특성과 구현 방식에서는 차이가 있을 수 있습니다. 공통점 변수의 스코프 유지: 클로저는 내부 함수가 외부 함수의 실행 컨텍스트가 종료된 후에도 외부 함수의 변수에 접근할 수 있게 해줍니다. 이를 통해 특정 함수 호출이 종료된 이후에도 변수의 상태를 유지할 수 있습니다. 데이터 은닉과 캡슐화: 클로저는 데이터를 함수 내부에 은닉하고, 특정 함수를 통해서만 데이터에 접근할 수 있게 함으로써 캡슐화를 제공합니다. 차이점 언어적 특성: JavaScript는 프로토타입 기..