Go, ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ язык программирования, придСрТиваСтся ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°: ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ. НСзависимо ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€Π°, Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ написания ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ β€” Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° стоит Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ мСстС. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрим:

  • Как автоматичСски Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄.
  • Как Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ошибки ΠΈ прСдупрСТдСния.
  • Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π»ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

πŸ“ Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: gofmt ΠΈ go fmt

Go поставляСтся с инструмСнтами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ΄ автоматичСски. Π­Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ споров ΠΎ табуляции, отступах ΠΈΠ»ΠΈ скобках.

  • gofmt β€” Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ инструмСнт, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹:

    gofmt -w main.go
    

    Π€Π»Π°Π³ -w ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ измСнСния Π±ΡƒΠ΄ΡƒΡ‚ записаны Π² Ρ„Π°ΠΉΠ».

  • go fmt β€” ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ°, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

    go fmt ./...
    

πŸ’‘ Π’ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°Ρ… Π²Ρ€ΠΎΠ΄Π΅ VS Code ΠΈΠ»ΠΈ GoLand Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π° сохранСниС Ρ„Π°ΠΉΠ»Π°.


🧠 Π›ΠΈΠ½Ρ‚ΠΈΠ½Π³: встроСнныС срСдства VS Code

Если Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΡˆΡŒ Visual Studio Code с установлСнным Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Go, Ρ‚ΠΎ Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³ ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ встроСнныС инструмСнты Go (govet, go vet, go build ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅:

ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°ΡŽΡ‚ ошибки ΠΈ прСдупрСТдСния прямо Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅;

Π΄Π°ΡŽΡ‚ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ подсказки (hover);

ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ автоисправлСния;

ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ сохранСниСм Ρ„Π°ΠΉΠ»Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройки Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³Π°:

ΠžΡ‚ΠΊΡ€ΠΎΠΉ settings.json (настройки ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ пространства).

Π”ΠΎΠ±Π°Π²ΡŒ:

“go.lintTool”: “staticcheck”, “go.lintOnSave”: “package”

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартный go vet:

“go.lintTool”: “golint”

ВсС сообщСния Π»ΠΈΠ½Ρ‚Π΅Ρ€Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ PROBLEMS.

πŸ’‘ Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ошибки ΠΈ Π½Π΅Π΄ΠΎΡ‡Ρ‘Ρ‚Ρ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.


πŸ“Œ Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΈΠ· Π³Π»Π°Π²Ρ‹

go fmt ΠΈ gofmt β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ΄ ΠΏΠΎ стандарту Go.

VS Code с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Go прСдоставляСт встроСнный Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³.

ВсС ошибки ΠΈ прСдупрСТдСния сразу Π²ΠΈΠ΄Π½Ρ‹ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅.

ИспользованиС автоформатирования ΠΈ Π»ΠΈΠ½Ρ‚Π΅Ρ€Π° экономит врСмя ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‰Π΅.