집중 집중 과정 파트 VI: 블록, 범위 및 섀도잉

블록



이동 중에 블록은 {} 세트로 정의됩니다. 일반적으로 우리는 함수를 생성할 때 이미 블록에 있습니다. 그러나 우리는 거의 모든 곳에서 블록을 정의할 수 있습니다.

i := 10
{
    i := 5
    fmt.Println(i) // i is 5
}
fmt.Println(i) // i is 10


범위



범위는 특정 변수가 정의되는 위치를 정의합니다. 범위는 블록 범위, 함수 범위 또는 패키지 범위일 수 있습니다. 각 범위는 이전 범위를 포함합니다. 패키지 범위 변수는 함수 및 블록에서 사용할 수 있지만 그 반대는 사용할 수 없습니다.

x := 10
var z int // z declared here
{
    fmt.Println(x) // this is fine
    y := 15
    z = 20 // defined here 
}
fmt.Println(y) // this is not fine
fmt.Println(z) // this is fine


섀도잉



외부 범위에 정의된 모든 변수를 섀도잉할 수 있습니다.

x := 10
{
    x := 15
    {
        x := 20
        fmt.Println(x) // 20
    }
    fmt.Println(x) // 15
}
fmt.Println(x) // 10


블록 레벨 섀도잉은 흔하지 않습니다. 이에 대한 드문 사용 사례가 있습니다. 하지만 블록 레벨 섀도잉이나 그 문제에 대한 블록에 대한 정말 좋은 사용 사례를 찾지 못했습니다.

다음 단계



이것은 바둑 단기집중과정 시리즈의 6부입니다.

좋은 웹페이지 즐겨찾기