🦫 Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎ Go для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π§Π°ΡΡ‚ΡŒ 3. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π’Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ тСкста

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ создадим ΠΈ запустим ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Go ΠΈ Π½Π° Π΅Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ познакомимся с ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠΎΠ΄Π° ΠΈ основными функциями.

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Go, которая Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сообщСниС с привСтствиСм Π² консоль.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ создадим ΠΏΠ°ΠΏΠΊΡƒ main/ ΠΈ размСстим Ρ‚Π°ΠΌ Ρ„Π°ΠΉΠ» main.go , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

main.go
package main // ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ main

import "fmt" // ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ fmt

// функция для Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ
func main() {
	var name string // объявили ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ name Ρ‚ΠΈΠΏΠ° string
	fmt.Scan(&name) // считали ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ name с ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Π²ΠΎΠ΄Π°

	// функция Print() ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сообщСниС Π² консоль
	fmt.Print("Hello, ", name)
}

Π Π°Π·Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°

Наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° начинаСтся со строки package main, которая опрСдСляСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚. Π’ Go ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π° Go Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с объявлСниСм Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° package main ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main(), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° Π·Π°Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ названию Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ располоТСны Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Ρ‹. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π² ΠΏΠ°ΠΏΠΊΠ΅ application/ содСрТится Ρ„Π°ΠΉΠ» server.go, Ρ‚ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² Π½Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ package application.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС происходит ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° "fmt", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТится Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ языка ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для форматирования Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°:

main.go
import "fmt" // ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ "fmt" для Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

Для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° нСсколько ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки:

import (
	"fmt"
	"strings"
)

Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° языка содСрТит большоС количСство ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π·Π°Π΄Π°Ρ‡. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, "fmt" ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для форматирования Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, "strings" – для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками. Для скачивания сторонних ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° go get <Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°>

НапримСр, Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ lib/pq, содСрТащий Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π£Π‘Π” PostgreSQL Π² Go:

go get github.com/lib/pq
πŸ‘¨β€πŸ’» Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Β»
πŸŽ“ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go для собСса
ΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ свои знания ΠΏΠΎ Go Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go для собСса»
🧩 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Go
Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Go для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ GoΒ»

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ€Π°Π·Π±ΠΎΡ€Ρƒ строк, содСрТащих Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

main.go
// функция для Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ
func main() {
	var name string // объявили ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ name Ρ‚ΠΈΠΏΠ° string
	fmt.Scan(&name) // считали ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ name с ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Π²ΠΎΠ΄Π°

	// функция Print() ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сообщСниС Π² консоль
	fmt.Print("Hello, ", name)
}

Π—Π΄Π΅ΡΡŒ происходит объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main() с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова func ΠΈ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ fmt.Scan() ΠΈ fmt.Print() ΠΈΠ· Ρ€Π°Π½Π΅Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°"fmt". ΠŸΠ΅Ρ€Π²Π°Ρ ΠΈΠ· Π½ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π° вторая – Π·Π° Π²Ρ‹Π²ΠΎΠ΄ сообщСния с ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² консоль.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Go?

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΡƒΠΏΡ€ΠΎΡ‰Π°Ρ‚ΡŒ ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ написанный ΠΊΠΎΠ΄. Они ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹) ΠΈ послС ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ этапС Π³Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Π² нашСм случаС Π·Π° запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, считываниС Π΄Π°Π½Π½Ρ‹Ρ… с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ Π² консоль.

БистСма ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

ΠœΠΎΠ΄ΡƒΠ»ΠΈ Π² контСкстС языка Go β€” это ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями ΠΈ вСрсионированиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ для старой систСмы GOPATH. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ структурированныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ вСрсиями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² Ρ€Π°Π½Π΅Π΅ созданной Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ main/. Для этого Π½Π°ΠΌ понадобится ΠΊΠΎΠΌΠ°Π½Π΄Π° go mod init:

go mod init github.com/<ваш_ник_в_github>/main

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² ΠΏΠ°ΠΏΠΊΠ΅ main/ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ„Π°ΠΉΠ» go.mod, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. Π•Π³ΠΎ содСрТимоС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

go.mod
module github.com/<ваш_ник_в_github>/main

go 1.21.4 // здСсь ΡƒΠΊΠ°Π·Π°Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ вСрсия go

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Ρ„Π°ΠΉΠ»Π° go.mod содСрТится Π½Π°Π·Π²Π°Π½ΠΈΠ΅ модуля, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ даСтся ΠΏΠΎ адрСсу располоТСния рСпозитория. Π”Π°Π»Π΅Π΅ указываСтся минимальная совмСстимая вСрсия Go, послС Ρ‡Π΅Π³ΠΎ слСдуСт список зависимостСй. Π’ нашСм случаС ΠΎΠ½ пуст. Для Π΅Π³ΠΎ обновлСния Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ go get , ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π½Π΅Π΅ с lib/pq .

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° go mod tidy, которая ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ зависимости ΠΈ удаляСт лишниС.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π―Π·Ρ‹ΠΊ Go являСтся ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ написанный Π½Π° Π½Ρ‘ΠΌ исходный ΠΊΠΎΠ΄ прСобразуСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΈ Π·Π°Ρ‚Π΅ΠΌ записываСтся Π² Ρ„Π°ΠΉΠ», исполняСмый ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ – это процСсс прСобразования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанной Π½Π° языкС программирования высокого уровня, Π² исполняСмый ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ позволяСт ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ошибки ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ сказываСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ Go Π΅ΡΡ‚ΡŒ Π΄Π²Π° способа запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ:

  1. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ go run <имя_Ρ„Π°ΠΉΠ»Π°>.go . Она автоматичСски ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ исполняСмый Ρ„Π°ΠΉΠ», запускаСт Π΅Π³ΠΎ ΠΈ сразу ΠΆΠ΅ удаляСт. Π­Ρ‚ΠΎΡ‚ способ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ²ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нСбольшой кусок ΠΊΠΎΠ΄Π° ΠΈ быстро ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.
  2. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ go build <имя_Ρ„Π°ΠΉΠ»Π°>.go . Она Ρ‚Π°ΠΊΠΆΠ΅ занимаСтся компиляциСй ΠΈ создаСт Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ исполняСмый Ρ„Π°ΠΉΠ», способный Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ОБ. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° обСспСчиваСт ΠΊΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ позволяСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, для ΠΊΠ°ΠΊΠΎΠΉ ОБ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ создаСтся Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ».

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ посмотрим Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄. Для этого Π² консоли Π²Π²Π΅Π΄Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ go build main.go, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ пСрСйдя Π² Ρ€Π°Π½Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ main/.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ main/ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ исполняСмый Ρ„Π°ΠΉΠ» main.exe (Windows) ΠΈΠ»ΠΈ main (Linux / MacOS). Π§Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, напишСм Π² консоли main (Windows) ΠΈΠ»ΠΈ ./main (Linux / MacOS). Π’ появившССся ΠΏΠΎΠ»Π΅ Π²Π²Π΅Π΄Π΅ΠΌ Π»ΡŽΠ±ΡƒΡŽ строку, ΠΏΡƒΡΡ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ user , послС Ρ‡Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ сообщСниС Hello, user, Ρ‡Ρ‚ΠΎ ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°.

ΠŸΠΎΠ΄Π²Π΅Π΄Ρ‘ΠΌ ΠΈΡ‚ΠΎΠ³

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ программирования ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° Go, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ составных частях любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ – ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, основных опСрациях ΠΈ Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

***

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ самоучитСля

  1. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΈ сфСра примСнСния Go, установка, настройка
  2. РСсурсы для изучСния Go с нуля
  3. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π’Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ тСкста.
  4. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… прСобразования. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
  5. УсловныС конструкции if-else ΠΈ switch-case. Π¦ΠΈΠΊΠ» for. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈ бСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹
  6. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. ΠžΠ±Π»Π°ΡΡ‚ΠΈ видимости. РСкурсия. Defer
  7. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈ слайсы. Append ΠΈ сopy. ΠŸΠ°ΠΊΠ΅Ρ‚ slices
  8. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ, Ρ€ΡƒΠ½Ρ‹, Π±Π°ΠΉΡ‚Ρ‹. ΠŸΠ°ΠΊΠ΅Ρ‚ strings. Π₯Сш-Ρ‚Π°Π±Π»ΠΈΡ†Π° (map)
  9. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. ΠžΡΠ½ΠΎΠ²Ρ‹ ООП
  10. НаслСдованиС, абстракция, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, инкапсуляция
  11. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок. Паника. ВосстановлСниС. Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
  12. ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π”ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ
  13. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Ρ‚ΠΎΠΉ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. ΠŸΠ°ΠΊΠ΅Ρ‚ time
  14. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. БуфСризация. Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ io, bufio, os
  15. ΠšΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ. Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹. ΠšΠ°Π½Π°Π»Ρ‹
  16. ВСстированиС ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ Π²ΠΈΠ΄Ρ‹. Table-driven ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ тСсты
  17. ΠžΡΠ½ΠΎΠ²Ρ‹ сСтСвого программирования. Π‘Ρ‚Π΅ΠΊ TCP/IP. Π‘ΠΎΠΊΠ΅Ρ‚Ρ‹. ΠŸΠ°ΠΊΠ΅Ρ‚ net

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
04 октября 2018

ΠŸΠΎΠΌΠ½ΠΈΡ‚ΡŒ всС: дСлимся Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠΎΠΉ ΠΏΠΎ Python

ΠœΡ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, которая ΠΏΠΎ ΠΏΡ€Π°Π²Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°...
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
22 апрСля 2017

Английский язык для IT-спСциалистов

ВсСм людям, Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ связанным с IT сфСрой, прСкрасно извСстно, Ρ‡Ρ‚ΠΎ Ρ€Π°...
admin
29 января 2017

Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹: ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ, Π²Π΅Π±-сайты, ΠΎΠ½Π»Π°ΠΉΠ½-курсы ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

Π’ этой ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ΅ прСдставлСн список ΠΊΠ½ΠΈΠ³, Π²Π΅Π±-сайтов ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½-курсов, Π΄Π°ΡŽΡ‰ΠΈΡ…...