그리고 나는 이런 종류의 변수 선언을 이해하지 못하는 것 같습니다.
_, prs := m["example"]
” _,
” 이 (가) 정확히 무엇을 하고 있으며 왜 대신 이와 같은 변수를 선언 했습니까?
prs := m["example"]
( Go by Example : Maps의 일부로 찾았습니다 . )
답변
반환 값에 대한 모든 변수를 선언 할 필요가 없습니다.
이를 공백 식별자 라고합니다 .
에서와 같이 :
_, 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
}
답변
Go 컴파일러는 절대 사용하지 않는 변수를 만들 수 없습니다.
for i, value := range x {
total += value
}
위 코드는 “내가 선언했고 사용하지 않았습니다”라는 오류 메시지를 반환합니다.
루프 내에서 i를 사용하지 않기 때문에 다음과 같이 변경해야합니다.
for _, value := range x {
total += value
}
답변
_
빈 식별자입니다. 할당되어야하는 값이 폐기됨을 의미합니다.
여기에서 example
버려지 는 키 값입니다 . 두 번째 코드 줄은 존재 부울을 버리고 값을에 저장합니다 prs
.
따라서지도에서 존재 여부 만 확인하려면 값을 버릴 수 있습니다. 맵을 세트로 사용하는 데 사용할 수 있습니다.
답변
빈 식별자는 구문에 변수 이름이 필요할 때마다 사용할 수 있지만 프로그램 논리는 그렇지 않습니다. 예를 들어 요소 값만 필요할 때 원치 않는 루프 인덱스를 버립니다.
발췌 :
Go 프로그래밍 언어 (Addison-Wesley 전문 컴퓨팅 시리즈)
브라이언 더블유 케르 니간
이 자료는 저작권으로 보호 될 수 있습니다.
답변
빈 식별자라고하며 반환 될 값을 참조하지 않고 버리고 자하는 경우에 도움이됩니다.
우리가 그것을 사용하는 곳 :
- 함수는 값을 반환하며 나중에 사용할 계획이 없습니다.
- 반복을 원하고 사용하지 않을 i 값이 필요합니다.
답변
기본적으로 _,
빈 식별자라고합니다. GO에서는 사용되지 않는 변수를 가질 수 없습니다.
value : = range 를 사용하는 경우 배열을 반복 할 때 인스턴스로 반복을 위해 i 값을 원하지 않습니다 . 그러나 i 값을 생략하면 오류가 반환됩니다. 그러나 i를 선언하고 사용하지 않으면 오류도 반환됩니다.
따라서 그것이 우리가 사용해야하는 곳 _,
입니다.
또한 앞으로 함수의 반환 값을 원하지 않을 때 사용됩니다.
답변
사용하지 않는 변수의 가장 좋은 사용 사례는 부분 출력 만 필요한 상황입니다. 아래 예에서는 값 (주 인구) 만 인쇄하면됩니다.
package main
import (
"fmt"
)
func main() {
statePopulations := map[string]int{
"California": 39250017,
"Texas": 27862596,
"Florida": 20612439,
}
for _, v := range statePopulations {
fmt.Println(v)
}
}