Go 언어의 블록 및 역할 영역
"네모난 블록과 오실로그래프는 어떤 차이가 있습니까?"나는 이런 의문에 대답하고 싶다.
블록은 소스 코드의 "블록"을 가리킨다
블록은 소스 코드가 단위로 요약된 블록입니다.
가장 알기 쉬운 예는 기호
{
...}
에서 정리한 문장조.{
var int x = 1
println(x)
}
이것은'명확한 블록'이라고 불린다.'명시된 네모'외에'기본 네모'도 있다.
다음은 5가지 기본 블록입니다.
if, for, switch 블록
if, for, switch 블록에서 주의해야 할 것은
{...}
블록뿐만 아니라 if|for|switch
부터 }
까지 전체적으로 은식 블록이다.// if から } までが1個のブロック
if x := 1; x == 1 {
// { から } まで はさらにもう1個のブロック
var x int
println(x) // => 0
}
본 예에서 먼저 1개if ... {...}
의 스텔스 블록이 있고 그 안쪽에 명확한 블록{...}
이 있다.(내부에서 x가 증거라고 재차 성명할 수 있다)노트
swtich 문장의case절과default절에서는 쓰지 않아도 블록을 구성합니다.
switch "foo" {
case "a":
var x int = 1
println(x)
case "b":
var x float64 = 2.0
println(x)
default:
var x string = "3"
println(x)
}
이 코드의 모든case절과default절은 단독 블록이기 때문에 표지부{...}
를 단독으로 설명할 수 있다.블록 = 분포 지도
현실 세계에 비유하면'일본','지바현','포안시'처럼 지도상의 분계선에 둘러싸인 구역이 비슷하다.
지구(포장) 바깥에는 우주(우주) 같은 느낌이 있다.
작용역은 어떤 표지부호가 관련된 범위를 선포하는 것을 가리킨다
작용역은 특정한 표지부
x
또는 x
의 성명에 착안할 때 이 선언이 효력을 가진 범위를 가리킨다.블록과 유사하지만 반드시 블록 경계와 같지는 않습니다.
예를 들어 로컬 변수를 선언할 때 그 효력은'선언 후 블록 끝까지'로 정의된다.
var x string
{
x = "hello"
println(x) // => "hello"
// --- ここまでの x は 外側で宣言された x
var x int // --- ここからブロックの末尾まで、 x は int
println(x) // => 0
}
println(x) // => "hello"
중간Foo
선언의 효과는 위의 행에 적용되지 않는다.var x int
중x = "hello"
은 외측 블록에서 선언한 x를 가리킨다.(외부에 선언되지 않은 경우 컴파일 오류)역할 영역 = 등장인물 x의 마법 유효범위
예를 들어 어떤 마법사
x
가 마법을 사용하는 범위(범위)는 천엽현(블록)의 남쪽 절반에 불과하다.네모난 블록과 작용역의 개념층이 다르다
블록이 소스 코드의 문구, 장소적인 물리적 층(소스 코드가 여기서 여기까지 등) 근처의 층이라면 범위는 식별자 선언의 내용(누가 누구의 영향을 받았는지 등)을 깊이 고려해 고위층의 말로 이해할 수 있다고 생각한다.
참고 자료
Reference
이 문제에 관하여(Go 언어의 블록 및 역할 영역), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/dqneo/articles/9e8a0d6f67f8f9510891텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)