programing

Go 선언에서“_,”(밑줄 쉼표)는 무엇입니까?

nasanasas 2020. 9. 24. 07:55
반응형

Go 선언에서“_,”(밑줄 쉼표)는 무엇입니까?


그리고 이런 종류의 변수 선언을 이해할 수없는 것 같습니다.

_, 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]

실제 값에 대해 걱정하지 않고지도에 존재하는지 테스트하려면 빈 식별자 인 간단한 밑줄 ( _)을 사용할 수 있습니다 .
공백 식별자는 모든 유형의 값으로 할당하거나 선언 할 수 있으며 값은 무해하게 버립니다.
맵에서 존재 여부를 테스트하려면 값에 대한 일반적인 변수 대신 빈 식별자를 사용합니다.

Jsor주석에 추가 했듯이 :

"일반적으로 허용되는 표준"은 멤버십 테스트 변수 "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.
따라서지도에서 존재 여부 만 확인하려면 값을 버릴 수 있습니다. 맵을 세트로 사용하는 데 사용할 수 있습니다.


빈 식별자라고하며 반환 될 값을 참조하지 않고 버리고 자하는 경우에 도움이됩니다.

우리가 그것을 사용하는 곳 :

  • 함수는 값을 반환하며 나중에 사용할 계획이 없습니다.
  • 반복을 원하고 사용하지 않을 i 값이 필요합니다.

빈 식별자는 구문에 변수 이름이 필요할 때마다 사용할 수 있지만 프로그램 논리는 그렇지 않습니다. 예를 들어 요소 값만 필요할 때 원치 않는 루프 인덱스를 버립니다.

발췌 :

Go 프로그래밍 언어 (Addison-Wesley 전문 컴퓨팅 시리즈)

브라이언 더블유 케르 니간

이 자료는 저작권으로 보호 될 수 있습니다.


기본적으로 _,빈 식별자라고합니다. GO에서는 사용되지 않는 변수를 가질 수 없습니다.

value : = range사용하는 경우 배열을 반복 할 때 인스턴스로 반복을 위해 i 값을 원하지 않습니다 . 그러나 i 값을 생략하면 오류가 반환됩니다. 그러나 i를 선언하고 사용하지 않으면 오류도 반환됩니다.

Therefore, that is the place where we have to use _,.

Also it is used when you don't want a function's return value in the future.


An unused variable is not allowed in Golang

If you were coming from other programming languages this might feel bit difficult to get used to this. But this results in more cleaner code. So by using a _ we are saying we know there is a variable there but we don't want to use it and telling the compiler that does not complain me about it. :)

참고URL : https://stackoverflow.com/questions/27764421/what-is-underscore-comma-in-a-go-declaration

반응형