오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Language

[GO] Go extension 안될때

junha6316 2021. 1. 9. 13:05

 

* 맥(MAC) 기준

 

GO는 Goroot 와 Gopath라는 독특한 경로를 갖고 있다. 

VS code에서 자동완성이나 패키지가되지 않을 때는 이러한 Gopath와 Goroot를 잘못 잡아줬기 때문이다.

 

 

첫번째로 command + ,(comma)를 눌러 다음과 같은 창이 뜨도록 하고 Extension 버튼을 눌러준다.

extension을 누르면 자신이 다운로드한 extension이 리스트업 되는데 이때 Go extension을 다운로드 받았다면 위와 같이 Go가 나오게되고 그걸 눌러주면된다.

옆으로 나오는 창에서 Alternative Tools 아래에 Edit in settings.json가 있고 그걸 눌러주면 settings.json에 접근 가능하다. settings.json 안에 아래와 같은 코드를 복사 붙여넣기 해주면 된다.

 

이때 go.goroot와 go.gopath는 꼭 터미널에서 go env 명령어를 사용해서 본인의 값을 넣어야한다.

그렇지 않으면 이후 패키지를 다운로드하는 단계에서 operaion is not supported가 뜨게된다.

또 하나 주의할 점은 꼭 Gopath안에 현재 실행하는 파일이 있어야 제대로 작동해야한다는 것이다.

예를 들어 내 Gopath는 "/Users/parkjunha/go" 인데 이 디렉토리안에서 프로젝트를 진행해야 정상적으로 자동완성이 지원된다.

settings.json 설정

{
    "go.buildOnSave": "workspace", 
    "go.lintOnSave": "workspace",
    "go.vetOnSave": "workspace",
     #이전에는 선택할 수 있는 값이 true,false였는데 이제 file, package, workplace 중에 하나로 바뀜
    "go.buildTags": "",
    "go.buildFlags": [],
    "go.lintFlags": [],
    "go.vetFlags": [],
    "go.coverOnSave": false,
    "go.useCodeSnippetsOnFunctionSuggest": false,
    "go.formatOnSave": true,
    // goreturns 은 goimports(자동 임포트), gofmt(자동 포맷팅)를 사용하고 리턴코드도 자동으로 채워준다.
    "go.formatTool": "goreturns",
    "go.gocodeAutoBuild": false,
    // 맥,리눅스 기준
    "go.goroot": "/usr/local/go",
    "go.gopath": "/Users/parkjunha/go",
    "bracket-pair-colorizer-2.activeScopeCSS": [

        "borderStyle : solid",
        "borderWidth : 1px",
        "borderColor : {color}",
        "opacity: 0.5"
    ],
    "go.alternateTools": {
    
    }
    
  
}


 

위 방법이 안된다면 아래 방법을 시도해보자

저장된 패키지지를 다시 다운로드 한다.

위 방법 조차 되지 않으면 프로젝트의 root 디렉토리로 가 아래 방법을 해보자

go mod init은 go.mod 파일 생성하는 명령어로 패키지에 대한 종속성을 관리한다.

go mod init