[go] Golang 미사용 가져 오기 오류를 비활성화하는 방법

기본적으로 Go는 사용하지 않는 가져 오기를 오류로 처리하여 가져 오기를 강제로 삭제합니다. 이 동작을 변경할 희망이 있는지 알고 싶습니다 (예 : 경고로 줄이기).

이 문제는 매우 성 가셔서 Go에서 코딩을 즐길 수 없습니다.

예를 들어, 일부 코드를 테스트하여 세그먼트 / 기능을 비활성화했습니다. lib의 일부 기능은 더 이상 사용되지 않지만 (예 : fmt, 오류 등) 약간의 테스트 후에 기능을 다시 활성화해야합니다. 이제 해당 가져 오기를 제거하지 않으면 프로그램이 컴파일되지 않으며 몇 분 후에 lib를 다시 가져와야합니다.

나는 GAE 프로그램을 개발할 때이 과정을 몇 번이고 반복했습니다.



답변

_패키지 이름 앞에 밑줄 ( )을 추가하면 사용하지 않는 가져 오기 오류가 무시됩니다.

다음은이를 사용하는 방법의 예입니다.

import (
    "log"
    "database/sql"

    _ "github.com/go-sql-driver/mysql"
)

부작용 (초기화)만을 위해 패키지를 가져 오려면 빈 식별자를 명시 적 패키지 이름으로 사용하십시오.

https://golang.org/ref/spec#Import_declarations 에서 자세히보기


답변

var _ = fmt.Printf트릭은 여기에 도움이됩니다.


답변

나도 같은 문제가있어. 나는 그들이 사용하지 않는 가져 오기 및 변수를 허용하지 않도록 언어를 구현 한 이유를 이해하지만 개인적으로 코드를 작성할 때이 기능이 성가시다는 것을 알았습니다. 이 문제를 해결하기 위해 컴파일러를 변경하여 사용하지 않는 변수와 코드 가져 오기를 허용하는 선택적 플래그를 허용했습니다.

관심이 있으시면 https://github.com/dtnewman/modified_golang_compiler 에서 확인할 수 있습니다. .

이제 go run -gcflags ‘-unused_pkgs’test.go 와 같은 명령으로 코드를 간단히 실행할 수 있습니다. 이러한 “사용하지 않는 가져 오기”오류가 발생하지 않습니다. 이 플래그를 생략하면 사용하지 않는 가져 오기를 허용하지 않는 기본값으로 돌아갑니다.

이렇게하려면 몇 가지 간단한 변경 만 필요했습니다. Go 순수 주의자들은 사용하지 않는 변수 / 임포트를 허용하지 않는 타당한 이유가 있기 때문에 이러한 변경에 만족하지 않을 것입니다. 그러나 저는이 문제가 Go에서 코딩하는 것이 훨씬 덜 즐겁다는 점에 개인적으로 동의합니다. 컴파일러.


답변

goimports를 사용하십시오 . 기본적으로 gofmt브래드 피츠 패트릭 (Brad Fitzpatrick)이 작성한 의 포크 이며 이제는 go 도구 패키지에 포함됩니다. 파일을 저장할 때마다 실행되도록 편집기를 구성 할 수 있습니다. 이 문제에 대해 다시는 걱정할 필요가 없습니다.


답변

fmt개발 및 테스트하는 동안 콘솔에 대한 일반 인쇄용 패키지를 사용하는 경우 로그 패키지 에서 더 나은 솔루션을 찾을 수 있습니다 .


답변

일부 코드 if false { ... }주석 처리하는 데 사용 합니다 . 중괄호 안의 코드는 구문 상 정확해야하지만 그렇지 않으면 말도 안되는 코드 일 수 있습니다.


답변

많은 사람들이 이미 타당한 타당성에 대해 논평했으며 나는 또한 원저자의 의도를 인정합니다. 그러나 Rob Pike는 Go가 몇몇 다른 주류 프로그래밍 언어가 부족하거나 달성하기 쉽지 않은 프로세스를 단순화 한 결과라고 여러 포럼에서 언급했습니다. Go의 언어 의미론 일뿐만 아니라 컴파일 속도를 높이기 위해 처음에는 비효율적으로 보이는 많은 것들이 채택되었습니다.

간단히 말해서, 사용하지 않는 가져 오기는 Go에서 프로그램을 지우고 컴파일 속도를 늦추기 때문에 오류로 간주됩니다. 부작용 (_)에 대해 가져 오기를 사용하는 것은 해결 방법이지만, 특히 코드 기반이 다음과 같은 경우 디버깅 / 테스트 목적으로 만 가져온 부작용과 함께 부작용이있는 유효한 가져 오기가 혼합되어있을 때 혼란스러워집니다. 나중에 다른 엔지니어 / 리뷰어에게 혼란을 줄 수있는 실수로 삭제하거나 삭제하지 않을 기회가 있습니다. 나는 사용하지 않는 것을 주석으로 처리했지만 VS 코드와 Goland와 같은 인기있는 IDE는 goimports쉽게 사용할 수 있으므로 가져 오기의 삽입 및 삭제가 꽤 잘됩니다. 자세한 내용은 https://golang.org/doc/effective_go.html#blank_import 링크를 참조 하세요.