그리고 나는 이런 종류의 변수 선언을 이해하지 못하는 것 같습니다.
_, prs := m["example"]
" _,
" 이 (가) 정확히 무엇을 하고 있으며 왜 대신 이와 같은 변수를 선언 했습니까?
prs := m["example"]
( Go by Example : Maps의 일부로 찾았습니다 . )
그리고 나는 이런 종류의 변수 선언을 이해하지 못하는 것 같습니다.
_, prs := m["example"]
" _,
" 이 (가) 정확히 무엇을 하고 있으며 왜 대신 이와 같은 변수를 선언 했습니까?
prs := m["example"]
( Go by Example : Maps의 일부로 찾았습니다 . )
prs
아마도 "현재"를 의미합니다. 귀하의 예제 코드 "example"
는 m
맵에 항목이 있는지 여부를 확인합니다 .
답변:
반환 값에 대한 모든 변수를 선언 할 필요가 없습니다.
이를 공백 식별자 라고합니다 .
에서와 같이 :
_, y, _ := coord(p) // coord() returns three values; only interested in y coordinate
( 다른 ' _
'사용 사례는 가져 오기를위한 것입니다. )
반환 값을 버리기 때문에 "에서와 같이 반환 값 중 하나만 확인하고 싶을 때 유용합니다. " Effective Go, map "에 표시된 " 맵에서 키 존재를 테스트하는 방법 .
_, present := timeZone[tz]
실제 값에 대해 걱정하지 않고지도에 존재하는지 테스트하려면 빈 식별자 인 간단한 밑줄 (
_
)을 사용할 수 있습니다 .
공백 식별자는 모든 유형의 값으로 할당하거나 선언 할 수 있으며 값은 무해하게 버립니다.
맵에서 존재 여부를 테스트하려면 값에 대한 일반적인 변수 대신 빈 식별자를 사용합니다.
"일반적으로 허용되는 표준"은 멤버십 테스트 변수 "ok"를 호출하는 것입니다 (채널 읽기가 유효한지 여부를 확인하는 것과 동일).
이를 통해 테스트와 결합 할 수 있습니다.
if _, err := os.Stat(path); os.IsNotExist(err) {
fmt.Printf("%s does not exist\n", path)
}
루프에서도 찾을 수 있습니다.
범위 (값)에서 두 번째 항목 만 필요한 경우 빈 식별자 인 밑줄을 사용하여 첫 번째 항목을 삭제합니다.
sum := 0
for _, value := range array {
sum += value
}
_
빈 식별자입니다. 할당되어야하는 값이 폐기됨을 의미합니다.
여기에서 example
버려지 는 키 값입니다 . 두 번째 코드 줄은 존재 부울을 버리고 값을에 저장합니다 prs
.
따라서지도에서 존재 여부 만 확인하려면 값을 버릴 수 있습니다. 맵을 세트로 사용하는 데 사용할 수 있습니다.
사용하지 않는 변수는 Golang에서 허용되지 않습니다.
다른 프로그래밍 언어에서왔다면 익숙해지기가 조금 어려울 수 있습니다. 그러나 이것은 더 깨끗한 코드를 생성합니다. 그래서 a를 사용함으로써 _
우리는 거기에 변수가 있다는 것을 알고 있지만 그것을 사용하고 싶지 않고 컴파일러에게 그것에 대해 불평하지 않는다고 말합니다. :)