GoLand의 새로운 기능

GoLand 2021.1을 사용하면 Docker, SSH, WSL 2를 통해 원격으로 프로그램을 빌드 및 실행하고, //go:embed를 포함하여 Go 1.16의 새로 지원되는 기능을 사용하고, JSON에서 코드를 빠르게 생성하고, 새로운 빠른 수정을 사용하여 오류를 쉽게 처리할 수 있습니다.

GoLand는 단지 Go IDE가 아닙니다. Go 코드 작업을 위한 기능 외에도 JavaScript, TypeScript, 데이터베이스용 기능이 새롭게 제공됩니다.

글로 읽는 대신 대화식으로 학습하고 싶으신가요? 그렇다면 IDE의 시작 화면에서 GoLand 2021.1의 새로운 기능 튜토리얼을 확인해주세요.

대상 실행

생성한 대상을 'Run Configuration' 창에서 구성

GoLand 2021.1에서는 로컬에서 이용 가능한 모든 소스 코드를 사용하여 사용자의 컴퓨터에서 개발하고 코드를 실행할 원격 컴퓨터를 대상으로 지정할 수 있습니다. 현재 IDE는 Docker, SSH, WSL 2(Linux용 Windows 하위 시스템)를 지원합니다.

설정에서 Run(실행) | Manage Targets(대상 관리)…를 선택하고 Add(추가) 아이콘(+)을 눌러 작업하려는 대상을 선택하세요. 구성을 완료한 후에 Run(실행) | Edit Configurations(구성 편집)…에서 Run Configuration(실행 구성)을 지정한 다음 작업하려는 대상을 선택해야 합니다.

Go 1.16

포함된 지시문에 폴더 추가

//go:embed 지원

Go 1.16부터 빌드를 수행할 때 파일과 디렉터리를 Go 바이너리에 포함할 수 있습니다.

Embedding works on a few types of variables: string, []byte, and embed.FS. 이러한 변수는 패키지의 최상위 수준에서 선언해야 합니다. 마지막으로 임베딩이 작동하려면 //go:embed 지시문을 추가해야 합니다.

GoLand는 코드 강조 표시, 포함된 지시문의 참조에서 프로젝트 내 파일 및 폴더로의 이동, Rename(이름 변경) 리팩터링, Find Usages(사용 위치 찾기), 코드 완성 및 몇가지 코드 검사를 제공합니다. 예를 들어, GoLand는 사용자가 잘못된 유형의 변수에 파일을 포함하려고 하면 이를 알려줍니다.

빠른 수정으로 'Fatal' 메서드를 'Error' 메서드로 바꾸기

(t/b).Fatal의 잘못된 사용 탐지

GoLand는 테스트 중에 생성된 고루틴 내의 testing.T 메서드 Fatal에 대한 잘못된 호출을 경고합니다.

전용 빠른 수정 기능은 t.Fatal(또는 유사한 메서드)을 호출하는 코드를 다시 작성하여 t.Error를 사용해 테스트 실패를 알리고 return 문을 사용해 조기에 고루틴을 종료합니다.

IDE에서 경고를 표시하고 문제를 해결할 수 있는 적절한 빠른 수정을 제공

asn1.Unmarshal의 잘못된 사용 탐지

Go 1.16에서는 go vetasn1.Unmarshal의 잘못된 사용을 탐지하여 바이트의 슬라이스가 마샬링되지 않은 값이 nil이 되지 않도록 합니다.

GoLand 2021.1은 유사한 검사 및 빠른 수정을 제공하여 이 문제를 해결합니다.

JSON 작업

에디터에서 복사 및 붙여넣기 기능을 사용해 JSON 데이터 붙여넣기

JSON 데이터를 에디터에 복사하여 붙여넣기만 하면 즉시 JSON에서 필드와 태그가 있는 구조체를 생성할 수 있습니다.

구조체를 생성하기 전에 JSON을 조정하려면 Alt+Enter를 눌러 Generate type from JSON(JSON에서 유형 생성) 인텐션을 호출하세요. 그러면 GoLand에서 복사된 JSON이 포함된 Generate Go type from the JSON(JSON에서 Go 유형 생성) 창이 열립니다. 이 창에서 원하는 대로 JASON을 조정한 다음, Generate(생성) 버튼을 누르면 구조체가 완성됩니다. 물론 JSON을 수동으로 창에 붙여넣을 수도 있습니다.

또한 이미 있는 빈 구조체 내에서 JSON을 변환할 수 있습니다. 이를 수행하려면 간단히 이 빈 구조체를 클릭하고 Alt+Enter를 누르거나 Generate 메뉴를 사용하여 Generate struct fields from JSON(JSON에서 구조체 필드 생성) 인텐션 액션을 호출하세요.

그 외에 Generate Go type from JSON(JSON에서 Go 유형 생성) 창에서 잘못된 JSON 코드를 사용하면 GoLand에서 알려줍니다.

'Generate Go type from JSON(JSON에서 Go 유형 생성)' 창을 이용해 JSON 데이터에서 구조체 생성

이제 구조체에서 내보낸 모든 필드에 대한 JSON 및 XML 태그를 생성하기가 훨씬 쉬워졌습니다.

Alt+Enter를 사용하여 구조체 또는 구조체의 모든 필드에서 Add key to tags(태그에 키 추가)를 호출하면 GoLand가 필드 이름이 있는 구조체의 모든 필드에 태그를 추가합니다. 모든 태그의 필드 이름 스타일을 변경하려면 임의의 필드 이름 위에서 Alt+Enter를 다시 누르고 Change field name style in tags(태그의 필드 이름 스타일 변경)를 선택하세요. 지원되는 스타일은 fieldName, FieldName, field-name, field_name입니다.

Update key value in tags(태그의 키 값 업데이트) 인텐션 액션을 사용하면 모든 태그 값을 한 번에 업데이트할 수 있습니다. 구조체에 있는 임의의 태그 값 위에서 Alt+Enter를 누르면 GoLand에서 모든 필드의 태그 끝에 캐럿을 추가합니다.

또한 IDE는 JSON, XML, ASN.1 코드용 SDK에서 제공하는 태그 값 내의 잘 알려진 토큰에 완성 기능을 제공합니다.

새로 지원되는 스타일의 JSON 파일

마지막으로, GoLand 2021.1은 구조화된 데이터 및 로그 작업에 사용되는 줄 바꿈으로 구분된 JSON Lines를 지원합니다. IDE는 .jsonl, .jslines, .ldjson.ndjson 파일 형식을 인식합니다.

이 형식에서 파일은 여러 줄을 포함하고 각 새 줄은 줄 바꿈 문자로 구분된 JSON 객체입니다. 줄의 시작과 끝 모두에 쉼표가 필요하지 않으며 파일 내용 전체를 대괄호나 중괄호로 묶을 필요가 없습니다.

간편하게 오류 처리

실행 중인 'Unhandled Error' 코드 검사 및 'Wrap error handling in a closure' 빠른 수정

Unhandled Error(처리되지 않은 오류) 코드 검사에 다음과 같은 완벽한 빠른 수정이 제공됩니다.

  • Handle error(오류 처리) 빠른 수정은 호출 결과를 변수에 대입하고 if error not nil(오류가 nil이 아닌 경우) 검사를 생성합니다.
  • Wrap error handling in a closure(오류 처리를 클로저로 래핑) 빠른 수정은 defergo 문에서 사용할 수 있으며 Handle error와 유사한 코드를 생성하지만 모든 항목을 클로저로 래핑합니다.
  • Ignore explicitly(명시적으로 무시) 적용 영역을 확장하여 defergo 문을 포함하도록 하였습니다. 이 빠른 수정은 호출 결과를 빈 변수에 대입하고 모든 항목을 클로저로 래핑합니다.

다양해진 빠른 수정

새로운 빠른 수정을 이용해 바이트를 문자열로 변환

복합 리터럴 내 유형 비호환성에 대한 빠른 수정

유형 비호환성을 해결하는 빠른 수정의 적용 영역을 확장했습니다. 이제 이 빠른 수정에서는 인터페이스를 구현하고 복합 리터럴 내에 필요한 유형으로 변환할 것을 제안합니다.

새로운 빠른 수정을 이용해 모든 필요한 필드에 유형 생성

누락된 필드를 생성하는 Create Type 빠른 수정

정의된 적이 없는 유형이 사용되고 있음을 GoLand가 탐지하면, Create Type(유형 생성) 빠른 수정에서 유형을 생성하도록 제안할 뿐만 아니라 사용자 대신 필드도 생성해줍니다.

'Select Fields' 창을 통해 구조체에서 getter 및 setter 생성

한 번에 모든 getter 및 setter 생성

대규모 구조체의 각 필드에 getset 메서드를 생성하는 작업은 다소 지루할 수 있습니다. 이제 전체 구조체의 getter 및 setter를 모두 한 번에 생성할 수 있습니다.

구조체에 있는 임의의 필드 이름 위에서 Alt+Enter를 누른 다음, 드롭다운 메뉴에서 Generate getter and setters(getter 및 setter 생성)를 선택하세요. 그러면 GoLand에서 Select Fields(필드 선택) 창이 열리고 여기에서 getset 메서드를 모든 필드에 또는 필요한 필드에만 생성할 수 있습니다.

리팩터링

기존 구조에서 유형 추출

Extract Type 리팩터링

Extract Type(유형 추출) 리팩터링을 사용하면 기존 유형에서 유형을 추출하거나 익명의 구조 유형을 이름 지정된 유형으로 변환할 수 있습니다. 호출하려면 Ctrl+Alt+Shift+T를 누르세요.

Go 모듈

'Rename' 리팩터링을 이용해 모듈 이름 변경

go.mod 파일에 Rename 리팩터링 지원

프로젝트를 충분히 실험하고 모든 초기 작업을 완료한 후 모듈의 이름을 변경해야 하는 경우가 있습니다. 이러한 상황을 고려해 go.mod 파일에 Rename(이름 변경) 리팩터링을 추가했습니다. 이 리팩터링을 사용하면 이전 모듈의 이름을 바꾸기 위해 프로젝트 트리에서 검색 및 바꾸기 작업을 할 필요 없이 안전하게 새 이름으로 모듈 이름을 변경할 수 있습니다.

Shift+F6을 눌러 모듈 이름에서 Rename(이름 변경) 리팩터링을 호출하세요. 그러면 GoLand에서 Rename(이름 변경) 창이 열리고 여기에서 현재 이름을 변경하고 주석 및 문자열에서 이름을 변경할지 여부를 선택하고 리팩터링의 미리보기를 열 수 있습니다. Refactoring Preview(리팩터링 미리보기) 탭에서는 이 모듈 이름의 모든 사용 위치를 탐색할 수 있습니다. 실행 취소를 사용하면 리팩터링으로 적용된 모든 변경 내용을 빠르게 되돌릴 수 있습니다.

접미사 완성

실행 중인 새로운 접미사 완성

새로운 varCheckError 접미사 완성

오류를 반환하는 식별자 뒤에 .varCheckError를 입력하면 IDE가 디폴트 변수 이름을 자동으로 추가하고 함수에서 오류를 반환합니다.

서식 지정 도구

'Import' 설정

기본 제공되는 서식 지정 도구가 goimports -local과 마찬가지 방식으로 import 문을 그룹화할 수 있습니다.

이 지원을 활성화하려면 Settings(설정) | Editor(에디터) | Code Style(코드 스타일) | Go | Imports(Import 문)로 이동하여 import 문 그룹화를 활성화하세요. 그러면 별도의 묶음으로 그룹화할 import 문을 지정할 수 있습니다.

실행 및 디버그

'Process Elevation' 설정

GoLand 2021.1에서는 sudo 세션을 연장하여 실행할 수 있습니다. 처음 실행할 때 GoLand는 sudo를 계속 실행할 것인지 즉시 종료할 것인지 묻습니다. 답변을 변경하고 싶은 경우 Settings(설정) | Appearance & Behavior(모양 및 동작) | System Settings(시스템 설정) | Process Elevation(프로세스 승격)으로 이동하세요.

단, 이 옵션을 활성화하면 GoLand 및 모든 타사 플러그인이 사용자의 시스템에 액세스할 수 있도록 권한을 부여하게 됩니다.

코드 완성

머신러닝 기반의 자동 완성이 켜진 상태에서 제공되는 코드 완성 결과

머신러닝 기반 코드 완성 기능을 활성화했습니다. 이 변경에서는 머신러닝(ML) 기반 코드 완성의 초기 단계를 기본 순위 지정 메커니즘의 대안으로 도입합니다.

Settings(설정) | Editor(에디터) | General(일반) | Code Completion(코드 완성)Mark position changes in the completion popup(코드 완성 팝업에 위치 변경 내용 표시)을 선택하면, 완성 목록에서 위/아래 화살표 아이콘을 사용하여 ML 완성으로 순위를 다시 지정한 옵션이 표시됩니다.

UI 개선 사항

새로운 빠른 액세스 메뉴를 이용해 IDE 테마 변경

빠른 액세스 메뉴

이전에 IDE의 왼쪽 하단에서 사용할 수 있었던 Configuration(구성) 위젯이 빠른 액세스 메뉴로 바뀌었습니다. 이 새로운 메뉴는 오륵쪽 상단 모서리에 표시됩니다. 톱니바퀴 아이콘을 눌러 테마나 키맵을 바꾸거나 플러그인으로 이동하거나 설정으로 이동해 보세요.

Windows에서 최근 프로젝트에 빠르게 액세스

Windows에서 '시작' 메뉴를 통해 최근 프로젝트에 빠르게 액세스

Windows의 작업 표시줄 또는 시작 메뉴에서 GoLand 아이콘을 마우스 오른쪽 버튼으로 클릭하면 최근 프로젝트에 액세스할 수 있습니다.

새로운 툴팁 표시

향상된 툴팁 표시

이제 툴팁이 차례로 표시되어 겹치는 일이 없습니다.

'Typography' 설정

글꼴 변형

Settings(설정) | Editor(에디터) | Font(글꼴) 설정 패널에서 글꼴 변형을 선택할 수 있습니다.

기타 변경 내용

실행 중인 새로운 기본 제공 브라우저 미리보기

HTML 미리보기 기본 제공

HTML 파일을 빠르게 미리 볼 수 있는 새로운 브라우저 미리보기를 기본 요소로 추가했습니다. IDE에서 HTML 파일, 연결된 CSS 파일 및 JavaScript 파일에 적용한 변경 내용이 즉시 저장되어 미리보기에 바로 업데이트됩니다.

미리보기를 열려면 에디터의 오른쪽 상단 모서리에 있는 위젯에서 GoLand 로고를 클릭하세요.

에디터에서 탭의 크기 변경

분할 뷰의 에디터 탭 최대화

분할된 에디터에서 동시에 여러 파일을 작업할 때 공간이 더 필요하신가요? 작업 중인 탭을 두 번 클릭하면 해당 탭의 에디터 창을 최대화할 수 있습니다. 탭을 원래 크기로 되돌리려면 다시 두 번 클릭하기만 하면 됩니다.

IDE의 'Plugins' 페이지에 보이는 설치된 'Makefile Language' 플러그인

Makefile Language 플러그인이 기본적으로 작동

GNU Make 언어 지원을 제공하는 Makefile Language 플러그인(이전에 타사 제품)이 이제 기본적으로 번들로 제공됩니다. GoLand 2021.1부터 구문 강조 표시, 빠른 문서, 대상에 대한 Find Usages(사용 위치 찾기), Makefile의 일부 탐색 및 코드 완성 액션을 즉시 사용할 수 있습니다!

Code With Me

사용 중인 'Code With Me'

공동 개발 및 페어 프로그래밍을 위한 새로운 JetBrains 서비스인 Code With Me가 이제 GoLand에서 번들로 제공됩니다.

프로젝트에 필요한 액세스 수준을 설정하고 게스트와 링크를 공유하세요. 동료가 나와 협업하기 위해 개별적으로 IDE를 설치할 필요도 없습니다. 채팅 메시지 기능과 더불어 내장된 음성 및 영상 통화 기능을 사용하면 팀이 코드에 대해 논의하고 지식을 공유하며 더 효율적으로 협업할 수 있습니다.

더 강력한 보안이 필요한 비즈니스의 경우, Code With Me 온프레미스를 설치하여 회사 자체의 비공개 네트워크에서 안전하게 실행할 수 있습니다.

현재 JetBrains 라이선스로 Code With Me를 사용할 수 있는지 자세히 알아 보려면 가격 페이지를 확인해 주세요.

Docker

'Run Options' 필드에서 작동하는 코드 완성

향상된 실행/디버그 구성

Run/Debug Configuration(실행/디버그 구성) 대화상자를 여러 면에서 개선했습니다.

  • 모든 필요한 빌드 옵션을 추가하려면 Modify options(수정 옵션)를 클릭하세요. 실행 옵션을 추가하려면 Modify(수정)를 클릭하세요. 이제 IDE에서 각 옵션을 검증하여 호환성을 확인합니다.
  • Docker Compose의 경우, 환경 변수 파일(.env)을 선언하는 옵션을 포함하여 기존의 모든 옵션을 지원합니다.
  • Dockerfile의 경우, 코드 완성이 Run Options(실행 옵션) 필드에서 작동하므로 모든 실행 명령을 기억할 필요가 없습니다.
  • Docker Images의 경우, 코드 완성을 사용하여 Image ID 또는 name 필드에 이미지 이름을 입력할 수 있습니다.
IDE에서 BuildKit을 사용하여 이미지 빌드

BuildKit 지원

프로젝트 빌드 속도를 높이는 BuildKit에 대한 실험적 지원을 추가했습니다. 이 옵션은 Modify options(옵션 수정)를 클릭하고 Enable BuildKit (experimental)(BuildKit 활성화(실험적 기능))을 선택하여 Run/Debug Configurations(실행/디버그 구성)에서 활성화할 수 있습니다.

스테이지 이름 옆에 있는 망치 아이콘을 클릭하기만 하면 IDE가 BuildKit을 사용하여 이미지를 빌드합니다. Run/Debug Configurations(실행/디버그 구성)에서 Run(실행) 섹션을 추가하면 아이콘이 변경됩니다. 변경된 아이콘을 클릭하면 이미지를 빌드할 수 있을 뿐만 아니라 컨테이너를 실행할 수도 있습니다.

에디터에서 스테이지 접기

멀티 스테이지 Dockerfile의 UI 개선 사항

Dockerfile에서 여러 개의 FROM 문을 사용하는 경우, 각 FROM 명령어는 새로운 스테이지를 시작합니다. GoLand 2021.1에서는 이제 스테이지를 접으면 스테이지 사이에 뚜렷한 구분선을 볼 수 있습니다.

Services 도구 창의 전용 버튼을 사용해 Docker 중지

Docker 실행 취소

실행 중인 Dockerfile을 중지하려는 경우 Services(서비스) 도구 창에서 쉽게 할 수 있습니다. 실행 중인 항목을 선택하고 컨텍스트 메뉴를 호출한 다음, Stop Deploy(배포 중지)를 클릭하세요.

'Bind Mounts' 창에서 작동하는 코드 완성

Docker 마운트용 환경 변수 및 매크로

Bind mount(바인드 마운트)를 사용할 때 호스트 시스템의 디렉터리 경로를 더 빠르게 입력할 수 있습니다. 코드 완성 메커니즘이 지원되어 Run/Debug Configurations(실행/디버그 구성)Bind mount(바인드 마운트) 옵션에서 매크로 및 환경 변수를 선택할 수 있습니다.

Dockerfile의 이미지에 대한 코드 완성

Dockerfile 내 이미지 완성

마지막으로 이미지 이름에 대한 완성 기능을 추가했습니다.

웹 개발 변경 사항

에디터 내 MDN 문서가 포함된 툴팁

MDN 문서를 번들로 제공

GoLand에서 MDN 문서가 번들로 함께 제공됩니다. 이에 따라 MDN 웹사이트와의 연결 문제가 해결되고 HTML, CSS, JavaScript 파일에서 에디터 내 문서가 더 빨리 표시됩니다. 에디터 내 문서의 정보도 더 풍부해졌습니다. 예를 들어 JavaScript API에 지원되는 브라우저 버전에 대한 세부정보가 표시됩니다.

실행 중인 Stylelint 및 해당하는 빠른 수정

향상된 Stylelint 지원

Stylelint로 CSS 코드를 검사하는 작업이 간편해졌습니다. 이 유명한 linter를 사용해 단 몇번의 클릭으로 문제를 수정할 수 있습니다. 파일에 있는 문제를 마우스로 가리키거나 그 자리에 캐럿을 놓고 Alt+Enter를 누른 다음, Stylelint: Fix current file(Stylelint: 현재 파일 수정)을 선택하세요.

또한 Settings(설정) | Languages & Frameworks(언어 및 프레임워크) | Style Sheets(스타일시트) | Stylelint에서 해당하는 필드에 구성 파일 경로를 지정할 수 있습니다.

선택자에 관한 문서 팝업

CSS 선택자 명시도

When working with style sheets, you can now check the specificity of your selectors – just hover over a selector that you want to check. 또는 선택자에 초점을 맞추고 Ctrl+Q를 눌러 Documentation(문서) 팝업에서 이 정보를 확인하세요.

데이터베이스 작업

테이블의 새로운 'ORDER BY' 필드

향상된 정렬 기능

데이터 정렬 기능을 다음과 같이 개선했습니다.

  • 새로운 ORDER BY 필드는 WHERE 필드(예전 이름은 Filter)와 유사하게 작동합니다. 작업 중인 절을 입력하여 그리드의 쿼리에 적용하세요.
  • 정렬은 기본적으로 '누적'되지 않습니다. 즉, 데이터를 정렬할 열 이름을 클릭하면 다른 열을 기준으로 한 정렬이 지워집니다. 누적된 정렬을 사용하려면 Alt 키를 누른 상태에서 열 이름을 클릭하세요.
  • 클라이언트 측에서 정렬을 사용하려는 경우(GoLand는 쿼리를 다시 실행하지 않으며 현재 페이지 내에서 데이터를 정렬하지도 않음), Sort via ORDER BY(ORDER BY를 통해 정렬)를 선택 해제합니다.
  • 숫자 기본 키를 기반으로 사전 정의된 정렬로 테이블을 열 수도 있습니다.
에디터 내 'Select first N rows from a table'

컨텍스트 라이브 템플릿

이 템플릿은 데이터베이스 탐색기에서 바로 간단한 구문을 생성하려는 사용자를 위한 솔루션입니다. 일반 라이브 템플릿은 간단한 쿼리를 빠르게 작성해야 하는 대부분의 경우에 사용할 수 있습니다. 그러나 사용자가 데이터베이스 탐색기의 컨텍스트에 있고 이미 필요한 객체에 집중하고 있는 경우, 해당 객체로 간단한 쿼리를 얻는 더 좋은 방법이 있다는 사실을 저희도 알고 있습니다.

Select first N rows from a table(테이블에서 처음 N개의 행 선택)은 일반 템플릿처럼 보입니다(동일하게 사용도 가능). 이 특정 구문은 모든 데이터베이스에서는 사용할 수 없으므로 그에 해당하는 파생 언어가 이 템플릿에 설정됩니다. 이 템플릿을 데이터베이스 탐색기에서 적용할 수 있게 만드는 주요 차이점은 $table$ 변수에 사용되는 특수한 표현식 dbObjectName에 있습니다.

새로운 창에서 객체에 권한 추가

권한 부여용 UI

객체를 수정할 때 권한 부여를 편집하기 위한 UI가 추가되었습니다.

Ctrl+F6을 눌러 데이터베이스 탐색기의 사용자에서 호출할 수 있는 Modify user(사용자 수정) 창에 객체에 권한을 추가할 수 있는 UI가 생겼습니다.

이 기능은 PostgreSQL, Redshift, Greenplum, MySQL, MariaDB, DB2, SQL Server, Sybase에서 사용할 수 있습니다.