Gopath golang: ΠΡΡ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π·Π½Π°ΡΡ ΠΏΡΠΎ GOPATH ΠΈ GOROOT / Π₯Π°Π±Ρ
ΠΡΡ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π·Π½Π°ΡΡ ΠΏΡΠΎ GOPATH ΠΈ GOROOT / Π₯Π°Π±Ρ
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Go ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ Π»Π΅Π³ΠΊΠΈΡ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° ΡΠ·ΡΠΊΠΎΠ², ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΡΠ»ΡΡΠ°ΡΡ: Β«ΠΊΠ°ΠΊ-ΡΠΎ Π²ΡΠ΅ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ GOROOT ΠΈ GOPATH Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΒ». Π Ρ ΠΎΡΡ ΡΠ΅ΠΌΠ° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°ΡΠΊΡΡΡΠ° Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ Go, Π½Π΅ Π±ΡΠ΄Π΅Ρ Π»ΠΈΡΠ½ΠΈΠΌ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ.
TL;DR
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅:
GOROOT
GOROOT β ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ, Π³Π΄Π΅ Π»Π΅ΠΆΠΈΡ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΡΡ Π±ΠΈΠ½Π°ΡΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ° Go ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ. Π§ΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ JAVA_HOME. Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΡΠΊΠ°ΠΌΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΠ°Π²ΠΈΡΠ΅ Go ΠΏΠΎΠ΄ Windows Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ MSI-ΠΈΠ½ΡΡΠ°Π»Π»Π΅ΡΠ°, Π° ΠΈΠ· zip-Π°ΡΡ ΠΈΠ²Π°. ΠΡ, ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡΠΈΠΉ Go, ΠΊΠ°ΠΆΠ΄Π°Ρ Π² ΡΠ²ΠΎΠ΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ.
Π Π°Π½ΡΡΠ΅ (Π΄ΠΎ Go 1.0) ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π±ΡΠ»Π° Π½ΡΠΆΠ½Π° β Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠΊΡΠΈΠΏΡΡ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠ°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ GOARCH ΠΈ GOOS. ΠΠΎ ΠΏΠΎΡΠ»Π΅ Go 1.0 Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ go tool ΠΈ ΡΠ΅ΠΉΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ GOROOT Ρ Π°ΡΠ΄ΠΊΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ. Π’ΠΎΠ΅ΡΡΡ, go β Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ½ΡΡΠ°Π»Π»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ β Π·Π½Π°Π΅Ρ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°ΠΊ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
go env GOROOT
Π MacOS X ΡΡΠΎ /usr/local/go/, Π² Linux ΡΠΎΠΆΠ΅ (Ρ ΠΎΡΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°), Π² Windows β Π‘:\Go.
GOPATH
Π Π²ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ GOPATH ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Π° ΠΈ Π½ΡΠΆΠ½Π° ΠΈ Π΅Ρ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²ΠΏΡΠΎΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. ΠΡΠΎ Π²Π°Ρ workspace, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ Π»Π΅ΠΆΠ°ΡΡ ΠΊΠΎΠ΄ ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π²ΡΠ΅Π³ΠΎ Ρ ΡΠ΅ΠΌ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π² Go ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π²Π°ΠΌ ΠΏΡΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠΉΡΠ΅ Π΅Π³ΠΎ Π² GOPATH. Π ΠΏΡΠΈΠΌΠ΅ΡΡ:
export GOPATH=~/go
export GOPATH=~/gocode
export GOPATH=~/Devel/go
export GOPATH=~/Projects/go
ΠΡ ΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π² .profile ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π²Ρ ΡΠ°ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
echo "export GOPATH=~/go" >> ~/.profile (ΠΈΠ»ΠΈ .bash_profile)
ΠΡΡ, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈ Π·Π°Π±ΡΠ΄ΡΡΠ΅. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π΅ΡΠ»ΠΈ Π΅Ρ Π΅ΡΠ΅ ΠΈ Π½Π΅Ρ, ΠΈ Π½Π° ΡΡΠΎΠΌ Π³ΠΎΡΠΎΠ²ΠΎ. Π’Π΅ΠΏΠ΅ΡΡ Π»ΡΠ±ΠΎΠΉ Π²ΡΠ·ΠΎΠ² go get github.com/someuser/somelib Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π² $GOPATH/src, Π° Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π² $GOPATH/pkg ΠΈΠ»ΠΈ $GOPATH/bin (Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ).
PATH
ΠΡΠΎ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ, Π½ΠΎ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ°Π·Ρ ΡΠΎΠΆΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΠ°Π· ΡΠΆ Π²Ρ Π²Π·ΡΠ»ΠΈΡΡ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΡΠ΅Π΄Ρ. Π Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊΠΈΠΌΠΈ-ΡΠΎ Go-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π»Π΅ΠΆΠ°ΡΡ Π² Π²Π°ΡΠ΅ΠΉ GOPATH/bin. Π§ΡΠΎΠ±Ρ ΠΈΡ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ ΡΠ΅Π»ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ PATH Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ $GOPATH/bin:
export PATH=$PATH:$GOPATH/bin
ΠΠΎΠΌΠ°Π½Π΄Π° go install ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΈ ΠΈΠ½ΡΡΠ°Π»Π»ΠΈΡΡΠ΅Ρ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°.
Π‘ΡΡΡΠΊΡΡΡΠ° Workspace
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π° ΡΡΡΡΠΊΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ GOPATH. ΠΠΎΠ·ΡΠΌΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
bin/
hello # ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° hello
pkg/
linux_amd64/ # ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΡΡ ΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ Π΄Π»Ρ Π±ΠΈΠ½Π°ΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ²
github.com/user/
stringutil.a # ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΏΠ°ΠΊΠ΅ΡΠ° stringutil
src/
github.com/user/
hello/
hello.go # ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ hello
stringutil/
reverse.go # ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ stringutil
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ? ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΎΠ±ΡΠ·ΡΠ²Π°Π΅Ρ Π½Π°Π·ΡΠ²Π°ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π² src/ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ-ΡΠΎ ΡΠΎΡΠΌΠ°ΡΡ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ src/test/my_first_app/main.go ΠΈ src/anyname/main.go β Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ (Π° Π²Ρ ΡΠ°ΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅)), ΡΠΎ Π²Π°ΠΌ ΡΡΠΎ Π±Π΅ΡΡΠΏΠΎΡΠ½ΠΎ ΡΡΠ°Π½Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ β ΡΡΠΈΠ»ΠΈΡΡ go get/install ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ Π±Π΅Π·Π±ΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ GOPATH Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ PATH β ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ, ΡΠ΅ΡΠ΅Π· ‘:’. GOPATH=~/go:~/other_workspace. ΠΡΠΎ Π² ΠΎΡΠ΅Π½Ρ ΡΠ΅Π΄ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°ΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²ΡΠΎΠ΄Π΅ gpm), Π½ΠΎ Π² 99% ΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π² GOPATH.
Π ΠΊΠΎΠ½ΡΠ΅-ΠΊΠΎΠ½ΡΠΎΠ², Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΠ΅ workspace-Ρ, Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ GOPATH Π½Π° Π½ΡΠΆΠ½ΡΡ (Π² ΡΠΊΡΠΈΠΏΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ). Π’Π°ΠΊ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈ Π΄Π΅Π»Π°ΡΡ.
Π‘ΡΡΠ»ΠΊΠΈ
golang.org/doc/install
golang.org/doc/code.html
dave.cheney.net/2013/06/14/you-dont-need-to-set-goroot-really
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Go Π½Π° Windows 10 Π‘ΠΊΡΠΈΠ½ΡΠΎΡΡ + ΠΠΈΠ΄Π΅ΠΎ
Go ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π΅ Π»ΠΈΡΠ½ΠΈΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Π²Π°ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΈΠ·ΡΡΠ΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ². ΠΡΠΎΠ΅ΠΊΡ ΡΡΠ°ΡΡΠΎΠ²Π°Π» Π² 2007 Π³ΠΎΠ΄Ρ, ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Google, ΡΡΠ°Π» ΡΠ΅ΠΌ ΡΠ·ΡΠΊΠΎΠΌ Go, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ. ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΡΠ»ΠΎΡΡ Π»Π΅Π³ΠΊΠΎΡΡΠΈ ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ°, Π΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π΄Π΅Π»Π°Ρ Go ΠΏΡΠΎΡΡΡΠΌ ΠΈ Π·Π°Π½ΡΡΠ½ΡΠΌ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ
Π£ Go ΠΎΡΠΊΡΡΡΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, ΡΡΠΎ Π·Π΄ΠΎΡΠΎΠ²ΠΎ. Π Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ β Π΄Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ.
Π€ΠΎΡΡΠΌ ΠΠΎΡΠ΅ΡΠΎΠ²
ΠΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°Π΄ ΡΠΎΡΡΠΌΠΎΠΌ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π½Π° Golang. ΠΡΠ΅Π½Ρ Π½ΡΠΆΠ½Ρ ΠΌΠΎΠ΄Π΅ΡΠ°ΡΠΎΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΡΡ ΠΏΠΎΠΌΠΎΡΡ Ρ ΠΎΡΠ²Π΅ΡΠ°ΠΌΠΈ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² ΠΈ ΠΏΠΎΠΌΠΎΡΡ Π² ΡΠ°Π·Π²ΠΈΡΠΈΠΈ Go-ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°.
Go Π½Π° Π€ΠΎΡΡΠΌ
Π£ΡΠΎΠΊΠΈ, ΡΡΠ°ΡΡΠΈ ΠΈ ΠΠΈΠ΄Π΅ΠΎ
ΠΡ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ Π² ΠΏΠ°Π±Π»ΠΈΠΊΠ΅ ΠΠ ΠΈ Telegram ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΡΠ°ΡΡΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Go. ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ΡΡ Π½Π° Π½Π°Ρ Π² ΠΠ ΠΈ Π² Telegram. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Go ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ².
Go Π² ΠΠ
Go Π² Telegram
Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Go Π½Π° Windows 10. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±Π°Π·ΠΎΠ²ΡΡ Π·Π½Π°Π½ΠΈΠΉ ΠΎ GitHub ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠΎ Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ Π΄Π»Ρ ΡΠ΅Ρ , ΡΡΠΈ Π·Π½Π°Π½ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ. ΠΡΠΎΡΡΠΎ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ.
Π‘Π»Π΅Π΄ΡΠΉΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡΠΌ, ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΎΠΌ Π½Π΅ ΠΌΡΡΠΈΡΡΡΡ ΠΈ Π½Π΅ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΡΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ.
Β
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅
- Π’Π°ΠΊ ΠΊΠ°ΠΊ Π·Π°ΡΠ°ΡΡΡΡ Go ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ Git, ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅;
- ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° ΡΠ°ΠΉΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ Go ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ 64-Π±ΠΈΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ Go Π΄Π»Ρ Microsoft Windows OS;
- Π‘Π»Π΅Π΄ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Go;
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ
cmd
ΠΈ Π½Π°Π±Π΅ΡΠΈΡΠ΅go version
; - ΠΡΠ²ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅ Π²Π²ΠΎΠ΄Π°
go version
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Ρ Π²Π°Ρ Π΄ΡΡΠ³Π°Ρ):
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Go
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠΌ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ Go. ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΠ°Π½Π΅Π»Ρ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π·Π°ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ Π² Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ > Π‘ΠΈΡΡΠ΅ΠΌΠ° > ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π‘ΡΠ΅Π΄Ρ Ρ ΠΏΡΠ°Π²ΠΎΠΉ Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Path Π² Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ C:\Go\bin
.
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Go. ΠΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΎΡ ΡΠΎΠΉ, Π³Π΄Π΅ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Ρ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠ°ΠΉΠ»Ρ Go. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π²Π°ΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Go ΠΌΠΎΠ³ΡΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΠΎ ΠΏΡΡΠΈ C:\Go
, Π° ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Go ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ C:\Projects\Go
.
Π Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Go Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΡΡΠΈ Π½ΠΎΠ²ΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ β bin
, pkg
, src
:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ GOPATH
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ GOPATH
ΠΈ ΡΠ²ΡΠΆΠ΅ΠΌ Π΅Π΅ Ρ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌ ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΠΌ Go. ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΠ°Π½Π΅Π»Ρ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π·Π°ΡΠ΅ΠΌ Π² Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΏΠΎΡΠΎΠΌ Π½Π° ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ. ΠΠ°ΡΠ΅ΠΌ ΠΏΠΎΠ΄ Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° Π‘ΠΎΠ·Π΄Π°ΡΡ.
Π ΡΠ΄ΠΎΠΌ Ρ ΠΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π²Π΅Π΄ΠΈΡΠ΅ GOPATH, Π° ΡΡΠ΄ΠΎΠΌ Ρ ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π²Π΅Π΄ΠΈΡΠ΅ C:\Projects\Go:
ΠΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π»ΠΈ ΠΏΡΡΠΈ Π²Π΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ΅Π· Π²Π²ΠΎΠ΄ echo %GOPATH%
Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Golang Π² Windows
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΈ Π½Π°Π±Π΅ΡΠΈΡΠ΅: go get github.com/golang/example/hello
.
ΠΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΎ (Π½Π° ΡΡΠΎ ΡΠΉΠ΄Π΅Ρ ΠΏΠ°ΡΡ ΡΠ΅ΠΊΡΠ½Π΄), Π·Π°ΡΠ΅ΠΌ Π½Π°Π±Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ: %GOPATH%/bin/hello
.
ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅: βHello, Go examples!β
ΠΠ°Π΄Π΅ΡΡΡ, Ρ Π²Π°Ρ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π½Π°Π±Π΅ΡΠΈΡΠ΅ Π²Π½ΠΈΠ·Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ: βgo envβ
.
ΠΡΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ ΡΠ΅ΡΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Go Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Windows: Wade Wegnerβs visually-simple & stylistic article.
ΠΠΎΠ½ΡΠ°Π²ΠΈΠ»Π°ΡΡ ΡΡΠ°ΡΡΡ?
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈ Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°!
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Go Π½Π° Ubuntu 20.04
Go ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ Ρ ΡΡΠ°ΡΡΠΈΠ΅ΠΌ Google. ΠΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ Π² ΡΡΠ΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΎΠ±ΡΠΈΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΠΊΠ°ΡΠ°ΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Go (Π²Π΅ΡΡΠΈΡ Go 1.15 Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Hello World.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° Ρ Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ΅ Ubuntu 20.04, Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±Π΅Π· ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ root
Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ sudo
.
Π€ΠΎΡΡΠΌ ΠΠΎΡΠ΅ΡΠΎΠ²
ΠΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°Π΄ ΡΠΎΡΡΠΌΠΎΠΌ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π½Π° Golang. ΠΡΠ΅Π½Ρ Π½ΡΠΆΠ½Ρ ΠΌΠΎΠ΄Π΅ΡΠ°ΡΠΎΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΡΡ ΠΏΠΎΠΌΠΎΡΡ Ρ ΠΎΡΠ²Π΅ΡΠ°ΠΌΠΈ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² ΠΈ ΠΏΠΎΠΌΠΎΡΡ Π² ΡΠ°Π·Π²ΠΈΡΠΈΠΈ Go-ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°.
Go Π½Π° Π€ΠΎΡΡΠΌ
Π£ΡΠΎΠΊΠΈ, ΡΡΠ°ΡΡΠΈ ΠΈ ΠΠΈΠ΄Π΅ΠΎ
ΠΡ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ Π² ΠΏΠ°Π±Π»ΠΈΠΊΠ΅ ΠΠ ΠΈ Telegram ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΡΠ°ΡΡΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Go. ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ΡΡ Π½Π° Π½Π°Ρ Π² ΠΠ ΠΈ Π² Telegram. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Go ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ².
Go Π² ΠΠ
Go Π² Telegram
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Go Π½Π° Ubuntu
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΠΈ Go 1.15, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅. ΠΠ° ΡΠ°ΠΉΡΠ΅ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ URL Π΄Π»Ρ ΡΠ°ΡΠ±ΠΎΠ»Π° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π° Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΅Π³ΠΎ Ρ Π΅ΡΠ΅ΠΌ SHA256.
ΠΠΎΡΠ΅ΡΠΈΡΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠΉ Go ΠΈ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ URL Π΄Π»Ρ ΡΠ°ΡΠ±ΠΎΠ»Π° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π° Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΅Π³ΠΎ Ρ
Π΅ΡΠ΅ΠΌ SHA256. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ curl
Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΡΠ±ΠΎΠ»Π°:
cd ~
curl -O https://dl.google.com/go/go1.15.linux-amd64.tar.gz
cd ~ curl -O https://dl.google.com/go/go1.15.linux-amd64.tar.gz |
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ sha256sumΒ
Π΄Π»Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ°ΡΠ±ΠΎΠ»Π°:
sha256sum go1.15.linux-amd64.tar.gz
sha256sum go1.15.linux-amd64.tar.gz |
ΠΠ±ΡΠ°Π·Π΅Ρ Π²ΡΠ²ΠΎΠ΄Π°:
go1.15.linux-amd64.tar.gz
2d75848ac606061efe52a8068d0e647b35ce487a15bb52272c427df485193602 go1.15.linux-amd64.tar.gz
go1.15.linux-amd64.tar.gz 2d75848ac606061efe52a8068d0e647b35ce487a15bb52272c427df485193602Β Β go1.15.linux-amd64.tar.gz |
ΠΡ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Ρ Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΡ, ΡΡΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ Π² Π²ΡΠ²ΠΎΠ΄Π΅ Π²ΡΡΠ΅. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΎΠΊ.
Β
ΠΠ°ΡΠ΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ tar
Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΡΠ°ΡΠ±ΠΎΠ»Π°. Π€Π»Π°Π³ x
Π³ΠΎΠ²ΠΎΡΠΈΡ tar
ΠΎΠ± ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠΈ, v
ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ c ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΠ°ΠΉΠ»Π°Ρ
(ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ²), Π° f
Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΡΡΠΎΡΠ½ΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
tar xvf go1.15.linux-amd64.tar.gz
tar xvf go1.15.linux-amd64.tar.gz |
Π’Π΅ΠΏΠ΅ΡΡ Π² Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Ρ Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ go
. Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° ΠΏΠ°ΠΏΠΊΠΈ go
ΠΈ Π³ΡΡΠΏΠΏΡ ΠΊ root
, ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² /usr/local
:
sudo chown -R root:root ./go
sudo mv go /usr/local
sudo chown -R root:root ./go sudo mv go /usr/local |
ΠΠ° Π·Π°ΠΌΠ΅ΡΠΊΡ: Π₯ΠΎΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΎΠΊΠ°ΡΠΈΡ
/usr/local/go
, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΡΠΎ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° GOPATH Π² Ubuntu
ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΡ Π½Π°ΡΡΡΠΎΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΡΠΈ Π²Π°ΡΠ΅ΠΉ ΡΡΠ΅Π΄Ρ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Go, Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ.
Π ΠΊΠΎΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ:
export GOPATH=$HOME/work
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
export GOPATH=$HOME/work export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin |
ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠ±Π΅ΡΠ΅ΡΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Go, ΡΠΎ ΠΈ Π² ΡΠ°ΠΉΠ»Π΅ Π²ΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Ρ Π²Π°ΡΠΈ ΠΏΡΡΠΈ ΠΊ Go. ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ Go ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ:
export GOROOT=$HOME/go
export GOPATH=$HOME/work
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOROOT=$HOME/go export GOPATH=$HOME/work export PATH=$PATH:$GOROOT/bin:$GOPATH/bin |
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ». ΠΠ°ΡΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ²:
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Go ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Go ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΈ ΠΏΡΡΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Go ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Go, ΠΊΡΠ΄Π° Go Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ:
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΡΠ΅ΡΠ΅Π· Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ». ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ user
ΡΠ²ΠΎΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° GitHub, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Git Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΠΈ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Go Π½Π° GitHub. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GitHub Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΡΡΡΠΊΡΡΡΠ° Π²Π°ΡΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ ~/my_project
.
mkdir -p work/src/github.com/user/hello
mkdir -p work/src/github.com/user/hello |
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ Go ΡΠ°ΠΉΠ» Β«Hello WorldΒ».
nano ~/work/src/github.com/user/hello/hello.go
nano ~/work/src/github.com/user/hello/hello.go |
ΠΠ½ΡΡΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π²ΡΡΠ°Π²ΡΡΠ΅ Π½ΠΈΠΆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΡ Go, ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ, ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° βHello, Worldβ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅.
package main
import «fmt»
func main() {
fmt.Printf(«hello, world\n»)
}
package main Β import «fmt» Β func main() { Β Β Β Β fmt.Printf(«hello, world\n») } |
ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡ βhello, worldβ
ΠΏΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅, ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Go ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π²Π΅ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ», Π·Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· Π²ΡΠ·ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ go install
:
go install github.com/user/hello
go install github.com/user/hello |
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΡΡΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ βhello, worldβ
, ΡΠΎΠ³Π΄Π° Go ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ hello
ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ which
:
ΠΡΠ²ΠΎΠ΄:
/home/user/work/bin/hello
/home/user/work/bin/hello |
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡΠ»Π΅ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Go, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΡΠ΅ΠΉ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Go-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠΎΠ½ΡΠ°Π²ΠΈΠ»Π°ΡΡ ΡΡΠ°ΡΡΡ?
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈ Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°!
ΠΡΠ°Π³ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ / ΠΠ»ΠΎΠ³ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ OTUS. ΠΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ / Π₯Π°Π±Ρ
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ. Π ΠΏΡΠ΅Π΄Π΄Π²Π΅ΡΠΈΠΈ ΡΡΠ°ΡΡΠ° ΠΊΡΡΡΠ° Β«Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ GolangΒ» ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ Π΄Π»Ρ Π²Π°Ρ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄.
ΠΠΎΠ΄ΡΠ»ΠΈ β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± Π±ΠΎΡΡΠ±Ρ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π² Go. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°, ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ Π²ΡΠ²Π΅ΡΡΠΈ Π½Π° ΠΏΠΎΠ»Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ Ρ Π²Π΅ΡΡΠΈΠΈ 1.13.
Π― Π½Π°Ρ ΠΎΠΆΡ ΡΡΡ ΡΠ΅ΠΌΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎΠΉ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ², ΠΏΡΠΈΡΠ΅Π΄ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ², ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠ΅ΡΠΈΠ» ΡΠΎΠ±ΡΠ°ΡΡ Π·Π΄Π΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠ²Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Π΄ΡΡΠ³ΠΈΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΊΠ°ΠΊ Ρ, ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ Π² Go. ΠΡ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π°, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΌΠ΅Π½Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΌ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ vendor, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Ρ Docker Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Ρ. Π΄.
ΠΡΠ»ΠΈ Π²Ρ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ Go ΠΈ Π·Π½Π°Π΅ΡΠ΅ Wiki, ΠΊΠ°ΠΊ ΡΠ²ΠΎΠΈ ΠΏΡΡΡ ΠΏΠ°Π»ΡΡΠ΅Π², ΡΡΠ° ΡΡΠ°ΡΡΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄Π»Ρ Π²Π°Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ. ΠΠΎ Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ , ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ² ΠΏΡΠΎΠ± ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ.
Π’Π°ΠΊ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΠΎ ΠΏΡΡΠΈ, Π·Π°ΠΏΡΡΠ³ΠΈΠ²Π°ΠΉΡΠ΅ ΠΈ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΠΉΡΠ΅ΡΡ ΠΏΠΎΠ΅Π·Π΄ΠΊΠΎΠΉ.
ΠΡΡΡΡΡΠΉ Π·Π°ΠΏΡΡΠΊ
ΠΡΠ»ΠΈ Π² Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΆΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΡΠΌΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ
go mod init
ΠΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΡΡ ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ Π²ΡΡΡΠ½ΡΡ. ΠΡΠΎ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΈΠΌΠ΅Π½ΠΈ, URL ΠΈ ΠΏΡΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°:
go mod init github.com/you/hello
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» go.mod
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π»ΠΎΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° ΠΈΡ
ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ (Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Π΄Π»Ρ Π²Π°Ρ, ΡΡΠΎ ΠΊΠ°ΠΊ package.json
ΠΈ package-lock.json
, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ Π² ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ»):
module github.com/you/hello
go 1.12
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ go get
, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π² Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ ΠΎΡΡ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π²Π΅ΡΡΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ go get, ΡΠΎ ΡΡΠΎ Π²Ρ Π·Π΄Π΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅, ΡΡΠΎ Π½Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ, Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ. ΠΠ°ΠΊ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅, Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ·ΡΡΠ½ΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ semver.
# use Git tags
go get github.com/go-chi/[email protected]
# or Git branch name
go get github.com/go-chi/chi@master
# or Git commit hash
go get github.com/go-chi/chi@08c92af
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Ρ ΡΠ°ΠΉΠ» go.mod
Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
module github.com/you/hello
go 1.12
require github.com/go-chi/chi v4.0.2+incompatible // indirect
Π‘ΡΡΡΠΈΠΊΡ +incompatible
Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΠ΅ Π½Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ ΠΏΠΎΠ΄ ΠΌΠΎΠ΄ΡΠ»ΠΈ Go ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠ°ΡΡ ΠΈΡ
ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π΅ΡΠ΅ Π½ΠΈΠ³Π΄Π΅ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ, ΠΎΠ½ Π±ΡΠ» ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ // indirect
. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΡΠΎ Π² ΠΏΠΎΡΡΠ΄ΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
go mod tidy
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, ΠΎΠ½Π° Π»ΠΈΠ±ΠΎ ΡΠ΄Π°Π»ΠΈΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, Π»ΠΈΠ±ΠΎ ΡΠ΄Π°Π»ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ // indirect
.
ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠ°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ go.mod
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ½Π° Π΅ΡΠ΅ Π½Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π° ΠΏΠΎΠ΄ ΠΌΠΎΠ΄ΡΠ»ΠΈ), ΡΠΎΠ³Π΄Π° Π²ΡΠ΅ Π΅Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Ρ Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠ°ΠΉΠ» go.mod
(ΠΊΠ°ΠΊ Π²Π°ΡΠΈΠ°Π½Ρ, Π²Π°Ρ ΡΠ°ΠΉΠ» go.mod)
Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ // indirect
, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ°ΠΌ Π½Π΅ ΠΎΡ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° Π² Π²Π°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ.
Π Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΠΏΠ»Π°Π½Π΅ ΡΠ΅Π»Ρ go mod tidy
ΡΠΎΡΡΠΎΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π»ΡΠ±ΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ
ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ ΠΠ‘, Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡ ΠΈ ΡΠ΅Π³ΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ Π΅Π΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ΅Π»ΠΈΠ·ΠΎΠΌ.
Π‘Π»Π΅Π΄ΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΡΠ°ΠΉΠ» go.sum
. ΠΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΡΡΠΎ lock-ΡΠ°ΠΉΠ». ΠΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ go.mod
ΡΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π»Ρ Π½Π° 100% Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΡ
ΡΠ±ΠΎΡΠΎΠΊ. Π€Π°ΠΉΠ» go.sum
ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π² ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΡ
ΡΠ΅Π»ΡΡ
: ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠ΅ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΠΌΠΌΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
Π²Π΅ΡΡΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΡΡΠ°ΡΡΠΈ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ go.sum
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ lock-ΡΠ°ΠΉΠ»ΠΎΠΌ, ΠΎΠ½ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΠΌΠΌΡ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΠΌΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ·ΠΆΠ΅ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ.
Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΌΠΈΠ³ΡΠΈΡΠΎΠ²Π°Π»ΠΈ mkcert Π² ΠΌΠΎΠ΄ΡΠ»ΠΈ (Ρ vendor/ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ) ΠΈ Π²ΡΠ΅ ΠΏΡΠΎΡΠ»ΠΎ Π³Π»Π°Π΄ΠΊΠΎ
https://github.com/FiloSottile/mkcert/commit/26ac5f35395fb9cba3805faf1a5a04d260271291$ GO111MODULE=on go1.11rc1 mod init $ GO111MODULE=on go1.11rc1 mod vendor $ git add go.mod go.sum vendor $ git rm Gopkg.lock Gopkg.toml Makefile
FAQ: ΠΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ Ρ ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΡ
go.sum
Π² git?
A: ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π΄Π°. Π‘ Π½ΠΈΠΌ ΠΎΠ±Π»Π°Π΄Π°ΡΠ΅Π»ΡΠΌ Π²Π°ΡΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ²Π΅ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ GitHub ΠΈ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΏΡΡΠ΅ΠΉ ΠΈΠΌΠΏΠΎΡΡΠ°. Π£ΠΆΠ΅ Π½Π° ΠΏΡΡΠΈ ΠΊ Π½Π°ΠΌ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ»ΡΡΡΠ΅, Π½Ρ Π° ΠΏΠΎΠΊΠ° ΡΡΠΎ ΡΠ° ΠΆΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ, ΡΡΠΎ ΠΈ Ρ ΡΡΠΈ Π² lock-ΡΠ°ΠΉΠ»Π°Ρ .
ΠΠΎΠΌΠ°Π½Π΄Ρ go build
ΠΈ go test
, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠ·ΡΡ Π²ΡΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Ρ
ΠΎΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ²Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ go mod download
, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΊΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ Π΄Π»Ρ CI.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ Π½Π°ΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈΠ· Π²ΡΠ΅Ρ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ $GOPATH/pkg/mod
. ΠΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΡΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΉ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ go get -u
ΠΈΠ»ΠΈ go get -u=patch
Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΌΠΈΠ½ΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ°ΡΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΡΡ ΡΠ°ΠΊ Π΄ΠΎ ΠΌΠ°ΠΆΠΎΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ. ΠΠΎΠ΄, Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΉ Π² ΠΌΠΎΠ΄ΡΠ»ΠΈ Go, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ:
- Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ semver (ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π³Π° VCS v1.2.3).
- ΠΡΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡΠΈΠΈ v2 ΠΈΠ»ΠΈ Π²ΡΡΠ΅, ΠΌΠ°ΠΆΠΎΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΊΠ°ΠΊ
/vN
Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΡΠ°ΠΉΠ»Π΅go.mod
, ΠΈ Π² ΠΏΡΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ°:
import "github.com/you/hello/v2"
ΠΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΌΠΎΠ³Π»ΠΈ Π±ΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅ (ΡΠΌ. diamond dependency problem).
Π Π΄Π²ΡΡ ΡΠ»ΠΎΠ²Π°Ρ , Go ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΡΡΠΎ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΎΡΠ΅Π½Ρ ΠΎΡΠΌΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Ρ ΠΏΡΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΠΈ ΠΌΠ°ΠΆΠΎΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ.
ΠΠ°ΠΌΠ΅Π½Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΊΠ° ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ ΠΊ ΡΠ°ΠΉΠ»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ replace
:
go mod edit -replace github.com/go-chi/chi=./packages/chi
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
module github.com/you/hello
go 1.12
require github.com/go-chi/chi v4.0.2+incompatible
replace github.com/go-chi/chi => ./packages/chi
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΡΠΎΠΊΡ Π²ΡΡΡΠ½ΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ:
go mod edit -dropreplace github.com/go-chi/chi
ΠΠΎΠΏΡΠΎΠ΅ΠΊΡΠ½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ
ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π΅ΡΡ ΠΊΠΎΠ΄ Go Ρ ΡΠ°Π½ΠΈΠ»ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π³ΠΈΠ³Π°Π½ΡΡΠΊΠΎΠΌ ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ Google ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°Π΅Ρ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ, ΠΈ ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π° Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ ΡΠ·ΡΠΊΠ°.
ΠΠΎΠ΄ΡΠ»ΠΈ Go β ΡΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° ΠΎΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°. ΠΠ°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Ρ
ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ ΡΠ²ΠΎΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ Π² $GOPATH
.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ Π²Π°ΡΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² $GOPATH/pkg/mod
. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΡΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ
ΡΠ°Π½ΡΡΡΡ Π²Π½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π²ΠΈΠ΄Π½Ρ Π² Π²Π°ΡΠ΅ΠΉ IDE.
ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ², Π½ΠΎ ΡΡΠΎ ΡΠΎ, Ρ ΡΠ΅ΠΌ Ρ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Go.
Π ΡΡΠ°ΡΡΡΡ, Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ (Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ) ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠ°ΡΠΈΠ°Π½Ρ 1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ GOPATH Π²Π½ΡΡΡΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ Go ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ GOPATH, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠΊΠ°Π·ΡΠ²Π°Π» Π½Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ°ΠΊΠ΅ΡΡ Π±ΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈΠ· Ρ ΠΎΡΡΠ°:
version: '3.7'
services:
app:
command: tail -f /dev/null
image: golang:1.12.6-stretch
environment:
# ΠΡΠ΅ Π²Π°ΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π±ΡΠ΄ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ ΠΏΡΡΠΌΠΎ Π·Π΄Π΅ΡΡ - /code/.go/pkg/mod
- GOPATH=/code/.go
ports:
- 8000:8000
volumes:
- ./:/code:cached
working_dir: /code
ΠΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ IDE Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ GOPATH Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ):
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° β ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΎ ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Go Π½Π° Ρ ΠΎΡΡ-ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Go Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
ΠΠ°ΡΠΈΠ°Π½Ρ 2: ΠΠ΅Π½Π΄ΠΎΡΠΈΠ½Π³ Π²Π°ΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± β ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΏΠ°ΠΏΠΊΡ vendor
:
go mod vendor
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΡΡΠ°Π·Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ: ΠΌΡ ΠΠ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ Go ΠΏΡΡΠΌΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΡ vendor: Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΡ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΡΠΆΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ.
Π ΡΠΎΠΌΡ ΠΆΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΡΠ²Π΅Π½Π΄ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΎΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠ°ΠΊ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅, Π·Π°ΡΠ΅ΠΌ ΠΎΡΠΈΡΡΠΈΡΠ΅ $GOPATH/pkg/mod
, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½ΠΎΠ²ΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- Go ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΈΡ ΠΊΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΠΎ
$GOPATH/pkg/mod/cache
. - ΠΡΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π±ΡΠ΄ΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Ρ Π²
$GOPATH/pkg/mod
. - Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Go ΡΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π²
vendor
ΠΏΠ°ΠΏΠΊΡ, ΡΠ΄Π°Π»ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠ΅ΡΡΡ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡΠ΅.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π² ΡΡΠΎΠΉ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ vendor-ΠΏΠ°ΠΏΠΊΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π΅ΡΠ΅ΠΉ:
Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Docker Compose Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΡΠΎΠΌΠΎΠ²):
version: '3.7'
services:
app:
command: tail -f /dev/null
image: golang:1.12.6-stretch
ports:
- 8000:8000
volumes:
# ΠΡΠΎ ΠΊΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ go, Π±Π΅Π· Π½Π΅Π³ΠΎ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
- modules:/go/pkg/mod/cache
- ./:/code:cached
working_dir: /code
volumes:
modules:
driver: local
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ ΠΠ ΠΊΠΎΠΌΠΈΡΡ ΡΡΡ vendor -ΠΏΠ°ΠΏΠΊΡ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ ΠΈΠ»ΠΈ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅. ΠΡΠΎ ΡΡΡΠΎΠ³ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ .
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ ΡΠΈΡΠ°Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅ΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Go ΠΈ Π½Π΅ΠΊΠΎΡΡΠΎΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠ°ΡΡΠΈΡΠ½ΡΠΌ Π²Π΅Π½Π΄ΠΎΡΠΈΠ½Π³ΠΎΠΌ (Π§Π?), Ρ ΠΌΠ΅Π½Ρ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΡΠ° ΡΠΈΡΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ°Π»Π°ΡΡ Π½Π΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ·ΠΊΠ΅ΠΉΡΠ°.
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΎΡΠΎΠ² Π½Π° reddit ΠΏΠΎΠΌΠΎΠ³ ΠΌΠ½Π΅ ΠΏΡΠΎΠ»ΠΈΡΡ ΡΠ²Π΅Ρ Π½Π° ΡΡΠΎ:
ΠΠ±ΡΡΠ½ΠΎ Π»ΡΠ΄ΠΈ Π²Π΅Π½Π΄ΠΎΡΡΡ ΡΠ²ΠΎΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ, ΠΊΠ°ΠΊ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅ΡΡ Π³Π΅ΡΠΌΠ΅ΡΠΈΡΠ½ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ Π±Π΅Π· Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π»ΠΈΡΠΈΡ ΠΊΠΎΠΏΠΈΠΈ Π³ΠΎΡΠΎΠ²ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΊΠ°Π·Π° github ΠΈΠ»ΠΈ ΠΈΡΡΠ΅Π·Π½ΠΎΠ²Π΅Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΎΠ³ΠΎ Π°ΡΠ΄ΠΈΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² VCS ΠΈ Ρ. Π΄.
ΠΠ°, Π½Π΅ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡ.
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Go, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π²Π΅Π½Π΄ΠΎΡΠΈΠ½Π³, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄Ρ GOFLAGS=-mod=vendor
. Π― Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π°Π³ΠΎΠ² ΠΏΡΠΎΡΡΠΎ ΡΠ»ΠΎΠΌΠ°Π΅Ρ go get
Π±Π΅Π· ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΈΡ
ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°:
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π³Π΄Π΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π²Π΅Π½Π΄ΠΎΡΠΈΠ½Π³ β ΡΡΠΎ Π²Π°ΡΠ΅ IDE:
ΠΠΎΡΠ»Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΠ± ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Ρ ΠΏΡΠΈΡΠ΅Π» ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π²Π΅Π½Π΄ΠΎΡΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² ΡΡΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅.
Π¨Π°Π³ 1. Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ go get
:
go get github.com/rs/[email protected]
Π¨Π°Π³ 2. ΠΠΌΠΏΠΎΡΡ
ΠΠ°ΡΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ ΠΊΡΠ΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅:
import (
_ "github.com/rs/zerolog"
)
Π¨Π°Π³ 3. ΠΠ΅Π½Π΄ΠΎΡΠΈΠ½Π³
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΎΡΠ²Π΅Π½Π΄ΠΎΡΠΈΡΠ΅ Π²Π°ΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π·Π°Π½ΠΎΠ²ΠΎ:
go mod vendor
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ go mod vendor ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ΅ΡΠΈΡΡ (Π° ΠΌΠΎΠ³ΡΡ ΠΈ Π½Π΅ ΡΠ΅ΡΠΈΡΡ) Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ.
go mod vendor
ΡΠΆΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°Π³ 1 ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ Π² ΡΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ (Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ). ΠΠ΄Π½Π°ΠΊΠΎ, Π±Π΅Π· ΡΠ°Π³Π° 2 ΠΎΠ½Π° Π½Π΅ ΠΏΠΎΠ΄Ρ
Π²Π°ΡΠΈΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ.
ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π»ΡΡΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ Ρ ΠΎΡΡ-ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΠ°Π½, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
ΠΠΈΡΠ½ΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ GOPATH ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΡΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π΅ ΠΆΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ go get
. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ Ρ
ΠΎΡΠ΅Π» ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΎΠ±Π΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠ°ΠΏΠΊΠ° vendor ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠ²ΡΡΠ½Π΅Π΅ Π΄Π»Ρ Π»ΡΠ΄Π΅ΠΉ, ΠΏΡΠΈΡΠ΅Π΄ΡΠΈΡ
Ρ Π΄ΡΡΠ³ΠΈΡ
ΡΠ·ΡΠΊΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ PHP, Ruby, Javascript ΠΈ Ρ. Π΄. ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΠ· ΠΌΠ°Ρ
ΠΈΠ½Π°ΡΠΈΠΉ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ
Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΡΡΠΎ Π½Π΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ
ΠΎΡΠΎΡΠΈΠΉ Π²ΡΠ±ΠΎΡ Π΄Π»Ρ Go.
ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Go, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ, Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠΎΡΡΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ CompileDaemon, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Π·Π° Π²Π°ΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ tools.go
ΡΠ°ΠΉΠ»Π°(ΠΈΠΌΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ) ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ΠΌ:
// +build tools
package tools
import (
_ "github.com/githubnemo/CompileDaemon"
)
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅
// +build tools
Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΡΠΈΠΌ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠ±ΠΎΡΠΊΠ°ΠΌ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. - ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ import ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ go ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Π΅ΡΡΠΈΠΈ Π²Π°ΡΠΈΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠ°ΠΉΠ»
go.mod
Π²Π°ΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΡ Π²ΠΎΡ ΠΈ Π²ΡΠ΅. Π― Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ Π½Π΅ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°ΠΊ ΠΆΠ΅ ΠΎΠ·Π°Π΄Π°ΡΠ΅Π½Ρ, ΠΊΠ°ΠΊ Ρ, ΠΊΠΎΠ³Π΄Π° Ρ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ Π½Π°ΡΠ°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ Go. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΈΡΡ Go Modules wiki Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
Π£ΡΠΏΠ΅ΡΡ Π½Π° ΠΊΡΡΡ.
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Π½Π° Golang ΠΈ gRPC ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Docker
ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ! ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ Β«Go, gRPC and DockerΒ» Π°Π²ΡΠΎΡΠ° Mat Evans.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠ΅ΠΉ ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Go ΠΈ Docker. Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ, ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ. ΠΠ°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅.
Π§ΡΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ?
ΠΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ gRPC. Π‘Π΅ΡΠ²Π΅Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π²Π½ΡΡΡΠΈ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΡΡΠΎΠΊΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π² ΠΎΡΠ²Π΅Ρ ΡΡΡΠΎΠΊΡ Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½Π½ΡΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΡΠ»Π°Π΅ΠΌ Β«ΠΊΠΎΡΒ» ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π² ΠΎΡΠ²Π΅Ρ Β«ΡΠΎΠΊΒ».
.proto-ΡΠ°ΠΉΠ»
.proto-ΡΠ°ΠΉΠ» ΠΎΠΏΠΈΡΡΡΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Ρ ΡΠ΅ΡΠ²ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΈ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΎΠ½ ΠΏΡΠΈ ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΠ°ΠΏΠΊΡ proto, Π° Π² Π½Π΅ΠΉ β ΡΠ°ΠΉΠ» reverse.proto
syntax = "proto3";
package reverse;
service Reverse {
rpc Do(Request) returns (Response) {}
}
message Request {
string message = 1;
}
message Response {
string message = 1;
}
Π€ΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ rpc. Π‘ΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
, ΡΠ»ΡΠΆΠ°ΡΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠ·Π»Π°ΠΌΠΈ, ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ message. ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠΎΠ»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° Request ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° Response.
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ .proto-ΡΠ°ΠΉΠ», Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ .go-ΡΠ°ΠΉΠ» Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅Π΄ΡΡΡΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΏΠ°ΠΏΠΊΠ΅ proto:
$ protoc -I . reverse.proto --go_out=plugins=grpc:.
Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΡΠ½Π°ΡΠ°Π»Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ gRPC.
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ .go-ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠ½ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ. ΠΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ godoc, ΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
$ godoc .
PACKAGE DOCUMENTATION
package reverse
import "."
Package reverse is a generated protocol buffer package.
It is generated from these files:
reverse.proto
It has these top-level messages:
Request
Response
....
ΠΠ»ΠΈΠ΅Π½Ρ
ΠΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Π½Π°Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π» Π²ΠΎΡ ΡΠ°ΠΊ:
reverse "this is a test"
tset a si siht
ΠΠΎΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ gRPC-ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ· .proto-ΡΠ°ΠΉΠ»Π°:
package main
import (
"context"
"fmt"
"os"
pb "github.com/matzhouse/go-grpc/proto"
"google.golang.org/grpc"
"google.golang.org/grpc/grpclog"
)
func main() {
opts := []grpc.DialOption{
grpc.WithInsecure(),
}
args := os.Args
conn, err := grpc.Dial("127.0.0.1:5300", opts...)
if err != nil {
grpclog.Fatalf("fail to dial: %v", err)
}
defer conn.Close()
client := pb.NewReverseClient(conn)
request := &pb.Request{
Message: args[1],
}
response, err := client.Do(context.Background(), request)
if err != nil {
grpclog.Fatalf("fail to dial: %v", err)
}
fmt.Println(response.Message)
}
Π‘Π΅ΡΠ²Π΅Ρ
Π‘Π΅ΡΠ²Π΅Ρ ΠΈΡΠΏΠΎΠ·ΡΠ΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ .go-ΡΠ°ΠΉΠ». ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π»ΠΎΠ³ΠΈΠΊΡ ΠΆΠ΅ Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ:
package main
import (
"net"
pb "github.com/matzhouse/go-grpc/proto"
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc/grpclog"
)
func main() {
listener, err := net.Listen("tcp", ":5300")
if err != nil {
grpclog.Fatalf("failed to listen: %v", err)
}
opts := []grpc.ServerOption{}
grpcServer := grpc.NewServer(opts...)
pb.RegisterReverseServer(grpcServer, &server{})
grpcServer.Serve(listener)
}
type server struct{}
func (s *server) Do(c context.Context, request *pb.Request)
(response *pb.Response, err error) {
n := 0
// Π‘reate an array of runes to safely reverse a string.
rune := make([]rune, len(request.Message))
for _, r := range request.Message {
rune[n] = r
n++
}
// Reverse using runes.
rune = rune[0:n]
for i := 0; i < n/2; i++ {
rune[i], rune[n-1-i] = rune[n-1-i], rune[i]
}
output := string(rune)
response = &pb.Response{
Message: output,
}
return response, nil
}
Docker
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Docker ΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ Π½ΡΠΆΠ΅Π½. ΠΠΎΡ Π½Π°Ρ Dockerfile:
FROM golang:1.12
ADD . /go/src/github.com/matzhouse/go-grpc/server
RUN go install github.com/matzhouse/go-grpc/server
ENTRYPOINT ["/go/bin/server"]
EXPOSE 5300
ΠΠ΄Π΅ΡΡ ΠΏΡΠΎΠΏΠΈΡΠ°Π½ ΠΊΠΎΠ΄ ΡΠ±ΠΎΡΠΊΠΈ Docker-ΠΎΠ±ΡΠ°Π·Π°. Π Π°Π·Π±Π΅ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ.
FROM golang:1.12
ΠΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ°Π· Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ golang. ΠΡΠΎ Docker-ΠΎΠ±ΡΠ°Π· Ρ ΡΠΆΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄ΠΎΠΉ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° Go.
ADD . /go/src/github.com/matzhouse/go-grpc/server
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² GOPATH/src ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
RUN go install github.com/matzhouse/go-grpc/server
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π² ΠΏΠ°ΠΏΠΊΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° GOPATH/bin.
ENTRYPOINT ["/go/bin/server"]
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°. Π Π½Π΅ΠΉ ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
EXPOSE 5300
ΠΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΡ ΡΠΎΠΎΠ±ΡΠ°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈΠ·Π²Π½Π΅.
ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ°
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ Π½Π°ΡΠΈΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
Π‘Π½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΎΠ±ΡΠ°Π· Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈΠ· Dockerfile:
$ sudo docker build -t matzhouse/grpc-server .
Sending build context to Docker daemon 31.76 MB
Step 1/5 : FROM golang
---> a0c61f0b0796
Step 2/5 : ADD . /go/src/github.com/matzhouse/go-grpc
---> 9508be6501c1
Removing intermediate container 94dc6e3a9a20
Step 3/5 : RUN go install github.com/matzhouse/go-grpc/server
---> Running in f3e0b993a420
---> f7a0370b7f7d
Removing intermediate container f3e0b993a420
Step 4/5 : ENTRYPOINT /go/bin/server
---> Running in 9c9619e45df4
---> fb34dfe1c0ea
Removing intermediate container 9c9619e45df4
Step 5/5 : EXPOSE 5300
---> Running in 0403390af135
---> 008e09b9aebd
Removing intermediate container 0403390af135
Successfully built 008e09b9aebd
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π· Π² ΡΠΏΠΈΡΠΊΠ΅:
$ docker images
REPOSITORY TAG IMAGE ID
...
matzhouse/grpc-server latest 008e09b9aebd
...
ΠΡΠ»ΠΈΡΠ½ΠΎ! Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π· Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ docker run -it -p 5300:5300 matzhouse/grpc-server
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ.Π½. ΠΏΡΠΎΠ±ΡΠΎΡ ΠΏΠΎΡΡΠΎΠ². ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ EXPOSE, ΡΠ°ΠΊ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ -p.
ΠΠ°ΠΏΡΡΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π΅ Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ², ΡΠ°ΠΊ ΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΠΌ Π΅Π³ΠΎ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ:
$ go build -o reverse
$ ./reverse "this is a test"
tset a si siht
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΡΠΎΡΡΠ΅Π½ΠΈΠ΅!
ΠΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Go (Ρ GOPATH)
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ Π²Ρ Π½ΠΎΠ²ΠΈΡΠΎΠΊ Π² Go, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΠΈΠ΅
ΠΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Go.
ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Go ΠΈ
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ go, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ,
ΡΠ±ΠΎΡΠΊΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Go.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ go
ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ
ΠΏΡΡΡ. ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠΎΡΡΠΈΡΠ΅ ΡΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ.Π Π½Π΅ΠΌ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΡΠ°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Go.
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΊΠ°ΠΊ
ΡΠΊΡΠΈΠ½ΠΊΠ°ΡΡ.
ΠΠΎΠ΄ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ±Π·ΠΎΡ
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Go ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΡΠ°Π½ΡΡ Π²Π΅ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Go Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ .
- Π Π°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Git). - ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² .
- ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Go Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
- ΠΡΡΡ ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° .
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
ΡΡΠ΅Π΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΊΠ°ΠΆΠ΄ΡΠΉ
ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ, ΠΈ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Ρ ΠΊ Π²Π΅ΡΡΠΈΠΈ
ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ.
Π Π°Π±ΠΎΡΠΈΠ΅ ΠΌΠ΅ΡΡΠ°
Π Π°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ — ΡΡΠΎ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Ρ Π΄Π²ΡΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ Π² ΠΊΠΎΡΠ½Π΅:
-
src
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Go ΠΈ -
bin
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ go
ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ bin
.
ΠΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ src
ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ.
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Git ΠΈΠ»ΠΈ Mercurial), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ
ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π΄Π°ΡΡ Π²Π°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅:
bin / ΠΏΡΠΈΠ²Π΅Ρ # ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠ°Π½Π΄Ρ outyet # ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠ°Π½Π΄Ρ src / github.com / golang / example / .git / # ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Git ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅/ hello.go # ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Outyet / main.go # ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ main_test.go # ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ stringutil / reverse.go # ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ° reverse_test.go # ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ golang.org/x/image/ .git / # ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Git BMP / reader.go # ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ° writer.go # ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ° ... (ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΎΠΏΡΡΠ΅Π½Ρ) ...
Π Π΄Π΅ΡΠ΅Π²Π΅ Π²ΡΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ Π΄Π²Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
(, ΠΏΡΠΈΠΌΠ΅Ρ
ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
).
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ example
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ( hello
ΠΈ outyet
) ΠΈ ΠΎΠ΄Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ( stringutil
).
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ bmp
ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ
.
Π’ΠΈΠΏΠΈΡΠ½ΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ
ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ
ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π½Π° Go ΡΠΎΡ
ΡΠ°Π½ΡΡΡ ΠΈ Π²ΡΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Go.
ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ , Π° Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π² Π²Π°ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅.
ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΡΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠ΅Π΄Ρ GOPATH
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠ΅Π΄Ρ GOPATH
ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ
Π Π°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ go
Π²Π½ΡΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΎΠΌΠ°ΡΠ½Π΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°,
ΡΠ°ΠΊ ΡΡΠΎ $ HOME / go
Π½Π° Unix,
$ Π΄ΠΎΠΌΠΎΠΉ / Π²ΠΏΠ΅ΡΠ΅Π΄
Π½Π° ΠΠ»Π°Π½ 9,
ΠΈ % USERPROFILE% \ go
(ΠΎΠ±ΡΡΠ½ΠΎ C: \ Users \ YourName \ go
) Π² Windows.
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ
Π½Π°Π±ΠΎΡ GOPATH
ΠΊ ΠΏΡΡΠΈ ΠΊ ΡΡΠΎΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ.
(ΠΡΡΠ³ΠΎΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ — ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ GOPATH = $ HOME
.)
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ GOPATH
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ , Π° Π½Π΅ .
ΡΠΎΡ ΠΆΠ΅ ΠΏΡΡΡ, ΡΡΠΎ ΠΈ Π²Π°ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Go.
ΠΠΎΠΌΠ°Π½Π΄Π° go
env
GOPATH
ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΎΠΊ GOPATH
;
ΠΎΠ½ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠ΅Π΄Ρ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°.
ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ bin
ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
Π½Π° Π²Π°Ρ PATH
:
$ ΡΠΊΡΠΏΠΎΡΡ PATH = $ PATH: $ (go env GOPATH) / bin
Π‘ΡΠ΅Π½Π°ΡΠΈΠΈ Π² ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ $ GOPATH
Π²ΠΌΠ΅ΡΡΠΎ $ (go env GOPATH) Π΄Π»Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ
.Π§ΡΠΎΠ±Ρ ΡΠΊΡΠΈΠΏΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ
Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ GOPATH,
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° $ HOME / go
ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ:
$ ΡΠΊΡΠΏΠΎΡΡ GOPATH = $ (go env GOPATH)
Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ GOPATH
, ΡΠΌ.
Β«ΠΠΎΠΌΠΎΠ³ΠΈ Π³ΠΎΠΏΠ°ΡΡΒ»
.
ΠΡΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
ΠΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° — ΡΡΠΎ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅Ρ.
ΠΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π΅Π³ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π½ΡΡΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
ΠΈΠ»ΠΈ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ (ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΎ Π½ΠΈΠΆΠ΅).
ΠΠ°ΠΊΠ΅ΡΡ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ ΠΏΡΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ
"fmt"
ΠΈ "net / http"
.
ΠΠ»Ρ Π²Π°ΡΠΈΡ
ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ±ΡΠ°ΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΠ΄ Π»ΠΈ
ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ Π±ΡΠ΄ΡΡΠΈΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌ Π²Π½Π΅ΡΠ½ΠΈΠΌ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΡΠ°Π½ΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π³Π΄Π΅-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
ΠΊΠΎΡΠ΅Π½Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΡΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ GitHub ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ
Π³ΠΈΡΡ
Π°Π±.com / user
, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²Π°Ρ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΡΡΡ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ
ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΡΠΎ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Ρ
ΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ²ΡΡΠΊΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ Π²Ρ
ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΡ ΡΡΠΎ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΡΡΠΈ,
ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΎΠ½ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ Π΄Π»Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ Go.
ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ github.com/user
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ. Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³
Π²Π½ΡΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄:
$ mkdir -p $ GOPATH / src / github.com / ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΠ°ΡΠ° ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
Π§ΡΠΎΠ±Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΊΠ΅ΡΡ (ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
github.com/user/hello
) ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΠ°ΠΊΠ΅ΡΠ°
Π²Π½ΡΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°:
$ mkdir $ GOPATH / src / github.com / user / hello
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ hello.go
,
ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Go.
ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡ "fmt" func main () { fmt.Println ("ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ.") }
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ±ΡΠ°ΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° go
:
Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² ΠΈΠ΄ΠΈ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈ github.com/user/hello
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π
go ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ
Π½Π°Ρ
ΠΎΠ΄ΠΈΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΈΡΠ°
github.com/user/hello
ΠΏΠ°ΠΊΠ΅Ρ Π²Π½ΡΡΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ
ΠΠΠΠΠ’
.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΡΡΠΈΡΡ ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΊΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ go install
ΠΈΠ·
ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΠ°ΠΊΠ΅ΡΠ°:
$ cd $ GOPATH / src / github.com / user / hello $ ΠΈΠ΄ΠΈ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈ
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ hello
, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ»
Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΡΠΎΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π² bin
ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°.
ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΊΠ°ΠΊ hello
(ΠΈΠ»ΠΈ Π² Windows hello.exe
).
Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ $ GOPATH / bin / hello
, ΡΡΠΎ
$ HOME / go / bin / hello
.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ go
Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ
ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²Π²Π΅Π΄Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΊ Π½Π΅ΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅:
$ $ GOPATH / Π±ΡΠ½ΠΊΠ΅Ρ / ΠΏΡΠΈΠ²Π΅Ρ ΠΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ.
ΠΠ»ΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ $ GOPATH / bin
Π² ΡΠ²ΠΎΠΉ PATH
,
ΠΏΡΠΎΡΡΠΎ Π²Π²Π΅Π΄ΠΈΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΈΠΌΡ:
$ ΠΏΡΠΈΠ²Π΅Ρ ΠΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ, ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΠΌΠΎΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π·Π°ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. ΠΠΏΡΡΡ ΠΆΠ΅, ΡΡΠΎΡ ΡΠ°Π³
Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ: Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Go.
$ cd $ GOPATH / src / github.com / user / hello $ git init ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΡΡΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Git Π² /home/user/go/src/github.com/user/hello/.git/ $ git add hello.go $ git commit -m "Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΠΈΠΊΡΠ°ΡΠΈΡ" [master (root-commit) 0b4507d] Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΠΈΠΊΡΠ°ΡΠΈΡ 1 ΡΠ°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, 7 ΠΏΡΠΎΡΠΈΠ²ΠΎΠΊ (+) ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΠΆΠΈΠΌ 100644 hello.go
ΠΡΠΏΡΠ°Π²ΠΊΠ° ΠΊΠΎΠ΄Π° Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΎΡΡΠ°Π²Π»Π΅Π½Π° ββΠ² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΈΡΠ°ΡΠ΅Π»Ρ.
ΠΠ°ΡΠ° ΠΏΠ΅ΡΠ²Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΅Ρ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ hello
.
ΠΠΏΡΡΡ ΠΆΠ΅, ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ — Π²ΡΠ±ΡΠ°ΡΡ ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΊΠ΅ΡΡ (ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
github.com/user/stringutil
) ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΠ°ΠΊΠ΅ΡΠ°:
$ mkdir $ GOPATH / src / github.com / user / stringutil
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π² ΡΡΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ reverse.go
Ρ
ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅.
// ΠΠ°ΠΊΠ΅Ρ stringutil ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. ΠΏΠ°ΠΊΠ΅Ρ stringutil // Π Π΅Π²Π΅ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡΡ ΠΏΠΎ ΡΡΠ½Π°ΠΌ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ.func Reverse (s string) string { r: = [] ΡΡΠ½Π° (ΠΈ) Π΄Π»Ρ i, j: = 0, len (r) -1; ΡΠ’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
go build
:Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π½Π° ΡΠ±ΠΎΡΠΊΡ github.com/user/stringutilΠΠ»ΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΏΡΠΎΡΡΠΎ:
$ ΠΏΠΎΠΉΡΠΈ ΡΠ±ΠΎΡΠΊΠ°ΠΡΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ».
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ.ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°
stringutil
,
ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉhello.go
(ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²
$ GOPATH / src / github.com / user / hello
), ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ:ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡ ( "fmt" "github.com/user/stringutil" ) func main () { fmt.Println (stringutil.Reverse ("! oG, olleH")) }Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
hello
:Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² ΠΈΠ΄ΠΈ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈ github.com/user/helloΠΠ°ΠΏΡΡΡΠΈΠ² Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
$ ΠΏΡΠΈΠ²Π΅Ρ ΠΡΠΈΠ²Π΅Ρ, Π²ΠΏΠ΅ΡΠ΅Π΄!ΠΠΎΡΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΠ°Π³ΠΎΠ² Π²Π°ΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
bin / ΠΏΡΠΈΠ²Π΅Ρ # ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠ°Π½Π΄Ρ src / github.com / user / ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅/ hello.go # ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ stringutil / reverse.go # ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΠ°Π·Π²Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΠ΅ΡΠ²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Go Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ
ΠΏΠ°ΠΊΠ΅Ρ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅Π³Π΄Π΅
ΠΈΠΌΡ
- ΠΈΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ°.
(ΠΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΈΠΌΡ.)
Π‘ΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Go Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ
ΠΏΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ°: ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ "crypto / rot13
"
ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π°Π·ΡΠ²Π°ΡΡrot13
.ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
package main
.ΠΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π±ΡΠ»ΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ.
Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Π² ΠΎΠ΄ΠΈΠ½ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»,
ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° (ΠΈΡ ΠΏΠΎΠ»Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²) Π±ΡΠ»ΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ.Π‘ΠΌ. Effective Go, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ
Π‘ΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ Π² Go.Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Go ΠΈΠΌΠ΅Π΅Ρ Π»Π΅Π³ΠΊΡΡ ΡΡΠ΅Π΄Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΡΡΠΎΡΡΡΡ ΠΈΠ·
go test
ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ ΠΏΠ°ΠΊΠ΅Ρtesting
.ΠΡ ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ΅ΡΡ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠΌΡΡ Π½Π°
_test.go
ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌTestXXX
Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ
func (t * ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.T)
.
Π‘ΡΠ΅Π΄Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ°ΠΊΡΡ ββΡΡΠ½ΠΊΡΠΈΡ;
Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ±ΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρt.Error
ΠΈΠ»ΠΈ
Ρ. ΠΠ΅ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΡ
, ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅ΡΠΎΡΡΠΎΡΠ²ΡΠΈΠΌΡΡ.ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅ΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ
stringutil
, ΡΠΎΠ·Π΄Π°Π² ΡΠ°ΠΉΠ»
$ GOPATH / src / github.com / user / stringutil / reverse_test.ΠΈΠ΄ΡΠΈ
, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Go.ΠΏΠ°ΠΊΠ΅Ρ stringutil ΠΈΠΌΠΏΠΎΡΡΠ½ΠΎΠ΅ "ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅" func TestReverse (t * testing.T) { case: = [] struct { Π², Ρ ΠΎΡΡ ΡΡΡΠΎΠΊΡ } { {"ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ", "dlrow, olleH"}, {"ΠΡΠΈΠ²Π΅Ρ,", "η δΈ, olleH"}, {"", ""}, } for _, c: = range case { ΠΏΠΎΠ»ΡΡΠΈΠ»: = ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ (c.in) if got! = c.want { t.Errorf ("ΠΠ±ΡΠ°ΡΠ½ΡΠΉ (% q) ==% q, Ρ ΠΎΡΡ% q", c.in, got, c.want) } } }ΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
go test
:$ ΠΏΡΠΎΠΉΡΠΈ ΡΠ΅ΡΡ Π½Π° github.com / user / stringutil Ρ ΠΎΡΠΎΡΠΎ github.com/user/stringutil 0.165sΠΠ°ΠΊ Π²ΡΠ΅Π³Π΄Π°, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ
go
ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ°
ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΊΠ΅ΡΡ:$ ΠΏΡΠΎΠΉΡΠΈ ΡΠ΅ΡΡ Ρ ΠΎΡΠΎΡΠΎ github.com/user/stringutil 0.165sΠΠ°ΠΏΡΡΡΠΈΡΠ΅
go help test
ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅
Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.Π£Π΄Π°Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ
ΠΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΠΊ Git ΠΈΠ»ΠΈ Mercurial.ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρgo
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ
ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈΠ· ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅, ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π²
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Git, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ Π½Π° GitHub
github.com/golang/example
.
ΠΡΠ»ΠΈ Π²Ρ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ URL-Π°Π΄ΡΠ΅Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π² ΠΏΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ°,
go get
Π·Π°Π³ΡΡΠ·ΠΈΡ, ΡΠΎΠ±Π΅ΡΠ΅Ρ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π΅Π³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ:Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ github.com/golang/example/hello $ $ GOPATH / Π±ΡΠ½ΠΊΠ΅Ρ / ΠΏΡΠΈΠ²Π΅Ρ ΠΡΠΈΠ²Π΅Ρ, ΠΈΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ!ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ,
ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ
ΠΏΠΎΠΌΠ΅ΡΡΠΈΡ Π΅Π³ΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²GOPATH
.(ΠΡΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ,go get
ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ
fetch ΠΈ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊgo install
.)ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
go get
ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:bin / ΠΏΡΠΈΠ²Π΅Ρ # ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠ°Π½Π΄Ρ src / github.com/golang/example/ .git / # ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Git ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅/ hello.go # ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ stringutil / ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ΅Π³ΡΠ΅ΡΡ.go # ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ° reverse_test.go # ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ github.com/user/ ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅/ hello.go # ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ stringutil / reverse.go # ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ° reverse_test.go # ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΠΎΠΌΠ°Π½Π΄Π°
hello
, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½Π°Ρ Π½Π° GitHub, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ
stringutil
Π² ΡΠΎΠΌ ΠΆΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ. ΠΠΌΠΏΠΎΡΡ Π²
hello.go
ΡΠ°ΠΉΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎ ΠΆΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ
go get ΠΠΎΠΌΠ°Π½Π΄Π°
ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ
ΠΏΠ°ΠΊΠ΅Ρ ΡΠΎΠΆΠ΅.ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ "github.com/golang/example/stringutil"ΠΡΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ - ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°ΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ Go Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π΄Π»Ρ
Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
ΠΠΈΠΊΠΈ Π‘ΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°
ΠΈ godoc.org
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΏΠΈΡΠΊΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Go.ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ
go
ΡΠΌ.
go help importpath
.Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅
ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ΡΡ Π½Π°
Π³ΠΎΠ»Π°Π½Π³-Π°Π½ΠΎΠ½Ρ
ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΡΡΡΠ»ΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ Π²ΡΡ ΠΎΠ΄Π΅ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Go.Π‘ΠΌ. Π‘ΠΎΠ²Π΅ΡΡ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π² Effective Go.
ΡΡΠ½ΡΠΉ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Go.Π‘ΠΎΠ²Π΅ΡΡΠΈΡΠ΅ ΡΠΊΡΠΊΡΡΡΠΈΡ ΠΏΠΎ Go, ΡΡΠΎΠ±Ρ Π²ΡΡΡΠΈΡΡ ΡΠ·ΡΠΊ
ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ.ΠΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ
ΡΡΠ°ΡΡΠΈ ΠΎ ΡΠ·ΡΠΊΠ΅ Go, Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ .ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΡΠΈ
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΡΡΡΠ»ΠΈΠΊΠ°ΠΌ
.
GOROOT ΠΈ GOPATH - Π‘ΠΏΡΠ°Π²ΠΊΠ°
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ
Go ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΠ΅ΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. GOROOT ΠΈ GOPATH - ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠΎΡ ΠΌΠ°ΠΊΠ΅Ρ.
GOROOT - ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π°Ρ Go SDK. ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Go.
GOPATH - ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ ΠΊΠΎΡΠ΅Π½Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ - ΡΡΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ
go
Π² Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (~ / go Π΄Π»Ρ Linux ΠΈ MacOS,% USERPROFILE% / go Π΄Π»Ρ Windows).GOPATH Ρ ΡΠ°Π½ΠΈΡ Π²Π°ΡΡ Π±Π°Π·Ρ ΠΊΠΎΠ΄Π° ΠΈ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, Π½Π°ΡΡΡΠΎΠΈΠ² GOPATH Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ. GOPATH ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΡΠ½Π΅ΠΌ Π²Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ:
src /: ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Go (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, .go, .c, .g, .s).
pkg /: ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, .a).
bin /: ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Go.
GOROOT
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° GOROOT
ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ Go SDK
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ Ρ Go SDK Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠ°ΠΏΠΊΠΈ bin ΠΈ src.
ΠΡΠΊΡΠΎΠΉΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ( Ctrl + Alt + S ) ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΊ.
ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠΎΠ±Π°Π²ΠΈΡΡ SDKΒ» ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Β«ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠΉΒ».
Π Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΊ Π²Π΅ΡΡΠΈΠΈ SDK, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΆΠ΅ΡΡΠΊΠΎΠΌ Π΄ΠΈΡΠΊΠ΅.
ΠΠ°ΠΆΠΌΠΈΡΠ΅ Β«ΠΡΠΊΡΡΡΡΒ».
ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Go SDK
ΠΡΠΊΡΠΎΠΉΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ( Ctrl + Alt + S ) ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΊ.
ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠΎΠ±Π°Π²ΠΈΡΡ SDKΒ» () ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Β«ΠΠ°Π³ΡΡΠ·ΠΈΡΡΒ».
Π ΡΠΏΠΈΡΠΊΠ΅ Β«ΠΠ΅ΡΡΠΈΡΒ» Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π²Π΅ΡΡΠΈΡ SDK.
Π ΠΏΠΎΠ»Π΅ Β«ΠΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β» ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΡΡΡ ΠΊ SDK. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ, ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ Π·Π½Π°ΡΠΎΠΊ Β«ΠΠ±Π·ΠΎΡΒ».
ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΠ.
GOPATH
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° GOPATH Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ GOPATH Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ: Global, Project ΠΈ Module. ΠΡΠ»ΠΈ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ Π²ΡΠ΅ ΡΡΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, GoLand ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠ±Π΅ΡΠ΅Ρ ΡΠ°ΠΌΡΡ ΡΠ·ΠΊΡΡ ΠΎΠ±Π»Π°ΡΡΡ.
ΠΡΠΊΡΠΎΠΉΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ( Ctrl + Alt + S ) ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΊ.
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ, Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ°Π·Π΄Π΅Π» (Global GOPATH, Project GOPATH, Module GOPATH) ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠΎΠ±Π°Π²ΠΈΡΡΒ».
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ²ΡΠ·Π°ΡΡ Ρ GOPATH.
ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΠ.
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: 19 Π°Π²Π³ΡΡΡΠ° 2020 Π³.
.
Golang Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°, Π½Π°ΡΡΡΠΎΠΉΠΊΠ°, GOPATH ΠΈ Go Workspace
Go - ΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Google.
ΠΠ½ ΡΠΎΡΠ΅ΡΠ°Π΅Ρ Π² ΡΠ΅Π±Π΅ Π»ΡΡΡΠ΅Π΅ ΠΈΠ· ΡΠ·ΡΠΊΠΎΠ² ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈ Π΄Π°Π΅Ρ Π²Π°ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΡΡΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΡΡΡΡΡΡ , ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Go -
.
- ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ: ΠΊΠ°ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠΈΠΏΠ°, ΡΠ°ΠΊ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ.
- Π₯ΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ.
- ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° Π±Π΅Π· Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ
- ΠΡΡΠΎΠΊΠ°Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
- ΠΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½Π°Ρ ΠΎΠΏΠΎΡΠ° Π΄Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ Π½Π°ΡΠ΅ΠΉ ΡΠ΅ΡΠΈΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ² ΠΏΠΎ Go. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Go Π² Π²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Go.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Go
ΠΠ²ΠΎΠΈΡΠ½ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ
Go Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Linux, Windows ΠΈ MacOS.Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Go ΠΈΠ· Π±ΠΈΠ½Π°ΡΠ½ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ.
ΠΡΠ»ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Go ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ².
Mac OS X
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Homebrew
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Go Π² Mac OS - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Homebrew -
brew install go
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² macOS
ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΠ°ΠΉΠ» ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Go (
.pkg
) Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΎΠΊ Go.ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ ΠΈ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ Π½Π° ΡΠΊΡΠ°Π½Π΅, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Go. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Go Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π²/ usr / local / go
.Linux
ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Linux Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Go ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΡΠΉΡΠ΅ Π΅Π³ΠΎ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³
/ usr / local
.sudo tar -C / usr / local -xzf go $ VERSION. $ OS- $ ARCH.tar.gz
ΠΠ°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³
/ usr / local / go / bin
Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄Ρ PATH. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ²ΠΎΠΉ~ /.bash_profile
ΡΠ°ΠΉΠ» -ΡΠΊΡΠΏΠΎΡΡ PATH = $ PATH: / usr / local / go / bin
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
/ opt / go
Π²ΠΌΠ΅ΡΡΠΎ/ usr / local
Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Go.ΠΠΊΠ½Π°
ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Windows MSI Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Go. ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ Π½Π° ΡΠΊΡΠ°Π½Π΅, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Go Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Windows. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Go Π²
C: \ Go
ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Go ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ go.ΠΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
Go
, ΡΠ»Π΅Π΄ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Go , Π½Π°Π±ΡΠ°Π²go ββ
Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ -$ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Go - ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Go. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: ΠΊΠΎΠΌΠ°Π½Π΄Π° go [Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ] ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: ΡΠ±ΠΎΡΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΎΡΠΈΡΡΠΈΡΡ ΡΠ΄Π°Π»ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ doc ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π° env print Go ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΠ΅Π΄Π΅ ΠΎΡΠΈΠ±ΠΊΠ° Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΡΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ fmt Π·Π°ΠΏΡΡΡΠΈΡΡ gofmt Π΄Π»Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Go, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Go ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ go Π²Π΅ΡΡΠΈΡ ΠΏΠ΅ΡΠ°ΡΡ Go Π²Π΅ΡΡΠΈΡ Π²Π΅ΡΠ΅ΡΠΈΠ½Π°Ρ Π±Π΅Π³ΠΈ ΠΈΠ΄ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²Π΅ΡΠ΅ΡΠΈΠ½Π°Ρ Π½Π° ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°Ρ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Β«go help [ΠΊΠΎΠΌΠ°Π½Π΄Π°]Β» Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅.ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ: c Π·Π²ΠΎΠ½ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Go ΠΈ C buildmode ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π° ΡΠΈΠΏΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠ΅Π΄Ρ gopath GOPATH ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ ΡΡΠ΅Π΄Ρ importpath ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΡΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΏΠ°ΠΊΠ΅ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² testflag ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ»Π°Π³ΠΎΠ² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ testfunc ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Β«go help [topic]Β» Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅.
GOPATH, ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Go ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π° Go
Go ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ -
ΠΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ Π²Π΅ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ Go ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅, Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ .Π Π°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ - ΡΡΠΎ Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π² Π²Π°ΡΠ΅ΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΏΡΡΡ ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ
GOPATH
.ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Go Π² Go 1.11 Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠ΄ Go Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Go. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Go Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ GOPATH. Π‘Π»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Go Π΄Π°Π½ΠΎ ΠΏΠΎ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ ΠΈ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π», Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅.
ΠΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΡΠ½Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ -
src
: ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Go .ΠΠ°ΡΠ°Π»ΠΎΠ³
src
ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Go. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» Go ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΡ. ΠΠ±ΡΡΠ½ΠΎ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π²Π½ΡΡΡΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Go.
bin
: ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ .ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Go ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΡΠΎΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³. ΠΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Go, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ
main
ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈmain ()
.
pkg
: ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°ΡΡ ΠΈΠ²Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Go (.a
) .ΠΡΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ (ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ) Ρ ΡΠ°Π½ΡΡΡΡ Π² ΡΡΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²Π½ΡΡΡΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
# Π’ΠΈΠΏΠΈΡΠ½ΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Go bin / myapp # ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» hello # ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΏΠΊΠ³ / github.com / callicoder / ΠΏΡΠΈΠΌΠ΅Ρ / numbers.a # ΠΡΡ ΠΈΠ² ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² strings.a # ΠΡΡ ΠΈΠ² ΠΏΠ°ΠΊΠ΅ΡΠ° github.com/gorilla/ mux.a # ΠΡΡ ΠΈΠ² ΠΏΠ°ΠΊΠ΅ΡΠ° go.uber.org/ zap.a # ΠΡΡ ΠΈΠ² ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² src / github.com/callicoder/example/ # Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² .git / myapp / app.go # ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ numbers / # Go Package (ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ) ΠΏΡΠ΅ΠΌΡΠ΅Ρ.ΠΈΠ΄ΡΠΈ prime_test.go strings / # Go Package (ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ) reverse.go trim.go github.com/gorilla/mux/ # Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ #... ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° go.uber.org/zap/ # Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ #... ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° hello / # ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ (Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½) ΠΏΡΠΈΠ²Π΅Ρ.Π³ΠΎ # ... (Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΎΠΏΡΡΠ΅Π½Ρ) ...
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° GOPATH
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠ΅Π΄Ρ GOPATH ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ
GOPATH
ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ$ HOME / go
Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Unix ΠΈ% USERPROFILE% \ go
Π² Windows. ΠΡΠ»ΠΈ Π²Π°Ρ ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ ΡΡΠΎΡ ΠΏΡΡΡ, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π΄Π΅Π»Π°ΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌgo ββ
Π²Π½ΡΡΡΠΈ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΠΈ Π½Π°ΡΠ°ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Go.ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄Ρ
GOPATH
, ΡΠ»Π΅Π΄ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ Π½ΠΈΠΆΠ΅ -Π‘ΠΈΡΡΠ΅ΠΌΡ Unix (Linux ΠΈ macOS)
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
GOPATH
Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°Ρ bash Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ°ΠΉΠ»~ /.bash_profile
ΡΠ°ΠΉΠ» -ΡΠΊΡΠΏΠΎΡΡ GOPATH = $ HOME / go
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Zsh , Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΡΡΠΎΠΊΡ Π² ΡΠ°ΠΉΠ»
~ / .zshrc
.Π‘ΠΈΡΡΠ΅ΠΌΠ° Windows
ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π²Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ
C: \ go-workspace
. ΠΠΎΡ ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡGOPATH
Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° -
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ
C: \ go-workspace
.Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ ΠΡΡΠΊ β ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΠ°Π½Π΅Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ β ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ β ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ Π‘ΠΈΡΡΠ΅ΠΌΠ° .
Π ΠΌΠ΅Π½Ρ ΡΠ»Π΅Π²Π° Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ .
ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ Π²Π½ΠΈΠ·Ρ.
Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΠΎΠ²ΡΠΉ ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ .
ΠΠ²Π΅Π΄ΠΈΡΠ΅
GOPATH
Π² ΠΏΠΎΠ»Π΅ ΠΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ .ΠΠ²Π΅Π΄ΠΈΡΠ΅
C: \ go-workspace
Π² ΠΏΠΎΠ»Π΅ ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ .ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΠ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΡΡ
GOPATH
Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΏΡΡΠΈ Π²Π°ΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Go.Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π°ΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Go Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Hello World
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Go ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ
$ HOME / go
. ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³src / hello
Π²Π½ΡΡΡΠΈ Π²Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌhello.go
ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ -.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Go 1.11, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²Π½Π΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Go.
ΠΏΠ°ΠΊΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΠΌΠΏΠΎΡΡ "fmt" func main () { fmt.Printf ("ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ \ n") }
$ cd $ HOME / go / src / ΠΏΡΠΈΠ²Π΅Ρ $ ls ΠΏΡΠΈΠ²Π΅Ρ.Π³ΠΎ
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
go ββrun
-$ ΠΈΠ΄ΠΈ, Π±Π΅Π³ΠΈ, ΠΏΡΠΈΠ²Π΅Ρ.ΠΈΠ΄ΡΠΈ ΠΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ±ΠΎΡΠΊΠΈ
go ββ
go ββrun ΠΠΎΠΌΠ°Π½Π΄Π°
ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Go, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Go, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρgo ββbuild
-$ cd $ HOME / go / src / ΠΏΡΠΈΠ²Π΅Ρ $ ΠΈΠ΄ΡΠΈ ΡΡΡΠΎΠΈΡΡ $ ls ΠΏΡΠΈΠ²Π΅Ρ ΠΏΡΠΈΠ²Π΅Ρ. Π³ΠΎ
ΠΠΎΠΌΠ°Π½Π΄Π°
go ββbuild
ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΡΠΎ ΠΈ ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° (hello
).ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ°ΠΊ -$. / ΠΡΠΈΠ²Π΅Ρ ΠΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³
bin
Ρ ΠΏΠΎΠΌΠΎΡΡΡgo ββinstall
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
go ββinstall
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³bin
Π²Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ -$ cd $ HOME / go / src / ΠΏΡΠΈΠ²Π΅Ρ $ go install
$ cd $ HOME / go / bin $ ls ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅ $ ./hello ΠΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³
$ HOME / go / bin
Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡPATH
Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² go ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°.ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ:
go ββhelp run
,go ββhelp build
,go ββhelp install
.ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ° ΡΡΠΎΠΌ Π²ΡΠ΅, ΡΠ΅Π±ΡΡΠ°! Π― Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π² Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Go. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° Go, Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ Golang.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π΄ΠΎ Π²ΡΡΡΠ΅ΡΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅.
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ°ΡΡΡ: ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅, ΠΠΎΠ»Π°Π½Π³: Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΠ²ΠΎΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΠΎΠ»Π°Π½Π³Π°
ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°: github.com / callicoder / golang-tutorials
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ
.
ΠΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Go
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Go Π²Π½ΡΡΡΠΈ
ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ go, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±
ΠΏΠΎΠ»ΡΡΠ°ΡΡ, ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Go.ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Go 1.13 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅ ΠΈ
GO111MODULE
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠ΅Π΄Ρ Π½Π΅ Π·Π°Π΄Π°Π½Π°. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠ΅ΡΠ΅
Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π΄ΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΎΠ½Π° Π·Π°Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π°
ΠΠΎΡ.ΠΠΎΠ΄ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Go ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΡ. ΠΠ°ΠΊΠ΅Ρ - ΡΡΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ
ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π²ΠΌΠ΅ΡΡΠ΅. Π€ΡΠ½ΠΊΡΠΈΠΈ,
ΡΠΈΠΏΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, Π²ΠΈΠ΄Π½Ρ Π²ΡΠ΅ΠΌ
Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ΅.Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠΎΠ΄ΡΠ»Ρ - ΡΡΠΎ ΡΠ±ΠΎΡΠ½ΠΈΠΊ
ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Go, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΡΡΠΊΠ°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅. Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Go ΠΎΠ±ΡΡΠ½ΠΎ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π² ΠΊΠΎΡΠ½Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.Π€Π°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ
go.mod
ΡΠ°ΠΌ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ : ΠΏΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ°
ΠΏΡΠ΅ΡΠΈΠΊΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΠΌΠΎΠ΄ΡΠ»Π΅. ΠΠΎΠ΄ΡΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΡ Π²
ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π΅Π³ΠΎ ΡΠ°ΠΉΠ»go.mod
, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ
ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π΄ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π΄ΡΡΠ³ΠΎΠΉ
go.mod
ΡΠ°ΠΉΠ» (Π΅ΡΠ»ΠΈ Π΅ΡΡΡ).ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ
ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΡΠΎ. ΠΠΎΠ΄ΡΠ»Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ Π±Π΅Π· ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΏΡΠΈΠ²ΡΡΠΊΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ Π²Ρ Π΅Π³ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΡΠ΅.
ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ.ΠΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»ΡΠΆΠΈΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ ΠΏΡΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π»Ρ Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²,
Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΡΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΊΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°go
, ΡΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΅Π΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠΊΠ°ΡΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρgolang.org/x/tools
,
ΠΊΠΎΠΌΠ°Π½Π΄Π°go
Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ
https://golang.org/x/tools
(ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π·Π΄Π΅ΡΡ).ΠΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° - ΡΡΠΎ ΡΡΡΠΎΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ°.ΠΠ°ΠΊΠ΅Ρ
ΠΏΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° - ΡΡΠΎ ΠΏΡΡΡ ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠΉ Ρ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ Π² ΠΌΠΎΠ΄ΡΠ»Π΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ΄ΡΠ»Ρgithub.com/google/go-cmp
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ
Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅cmp /
. ΠΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°
github.com/google/go-cmp/cmp
. ΠΠ°ΠΊΠ΅ΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π΄Π΅Π»Π°ΡΡ
Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° ΠΏΡΡΠΈ ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ.ΠΠ°ΡΠ° ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
Π§ΡΠΎΠ±Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΡΡ ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ (ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
example.com/user/hello
) ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅go.mod
, ΠΊΠΎΡΠΎΡΡΠΉ
Π·Π°ΡΠ²Π»ΡΠ΅Ρ ΠΎΠ± ΡΡΠΎΠΌ:$ mkdir hello # ΠΠ»ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ. $ cd ΠΏΡΠΈΠ²Π΅Ρ $ go mod init example.com/user/hello go: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ go.mod: module example.com/user/hello $ cat go.mod ΠΌΠΎΠ΄ΡΠ»Ρ example.com/user/hello ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ 1.14 $ΠΠ΅ΡΠ²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Go Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ
ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅
. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ
.ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ
hello.ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅
Π²Π½ΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Go:ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡ "fmt" func main () { fmt.Println ("ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ.") }Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ±ΡΠ°ΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°
go
:$ ΠΈΠ΄ΠΈ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈ example.com/user/hello $ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
hello
, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ»
Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΡΠΎΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠ°ΠΊ$ HOME / go / bin / hello
(ΠΈΠ»ΠΈ,
ΠΏΠΎΠ΄ Windows% USERPROFILE% \ go \ bin \ hello.exe
).ΠΠ°ΡΠ°Π»ΠΎΠ³ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΡΡΡ
GOPATH
ΠΈGOBIN
ΡΡΠ΅Π΄Π°
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½GOBIN
, Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π½Π° Π½Π΅Π³ΠΎ.
ΠΊΠ°ΡΠ°Π»ΠΎΠ³. ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½GOPATH
, Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π²
ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³bin
ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π²
ΡΠΏΠΈΡΠΎΠΊGOPATH
. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π²
ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³bin
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡGOPATH
($ HOME / go
ΠΈΠ»ΠΈ% USERPROFILE% \ go
).ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
go env
Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄go
:$ go env -w GOBIN = / Π³Π΄Π΅-ΡΠΎ / Π΅ΡΠ΅ / bin $Π§ΡΠΎΠ±Ρ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΡΠ°Π½Π΅Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ
go env -w
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅go env -u
:$ go env -u ΠΠΠΠΠ $ΠΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠΎΠ΄Π΅
go install
ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³.ΠΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½Π΅
ΠΌΠΎΠ΄ΡΠ»Ρexample.com/user/hello
,go install
ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ ΡΠ±ΠΎΠΉ.ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ
go
ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΡΡΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅
Π² ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ - ΠΏΠ°ΠΊΠ΅Ρ Π²
ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΡΡ.
ΠΡΠ°ΠΊ, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π²ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ:$ go install example.com/user/hello$ go install.$ go installΠΠ°Π»Π΅Π΅ Π·Π°ΠΏΡΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.ΠΠ»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΌΡ
Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π² Π½Π°ΡPATH
, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ
Π»Π΅Π³ΠΊΠΎ:# ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Windows Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠΊΠΎΠ½ΡΡΠ»ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎ https://github.com/golang/go/wiki/SettingGOPATH # Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ% PATH%. $ ΡΠΊΡΠΏΠΎΡΡ PATH = $ PATH: $ (dirname $ (go list -f '{{.Target}}'.)) $ ΠΏΡΠΈΠ²Π΅Ρ ΠΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ. $ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ, ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΠΌΠΎΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π·Π°ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. ΠΠΏΡΡΡ ΠΆΠ΅, ΡΡΠΎΡ ΡΠ°Π³
Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ: Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Go.$ git init ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΡΡΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Git Π² /home/user/hello/.git/ $ git add go.mod hello.go $ git commit -m "Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΠΈΠΊΡΠ°ΡΠΈΡ" [master (root-commit) 0b4507d] Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΠΈΠΊΡΠ°ΡΠΈΡ 1 ΡΠ°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, 7 ΠΏΡΠΎΡΠΈΠ²ΠΎΠΊ (+) ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΠΆΠΈΠΌ 100644 go.mod hello.go $ΠΠΎΠΌΠ°Π½Π΄Π°
go
Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΏΡΡΡ ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ URL-Π°Π΄ΡΠ΅Ρ HTTPS ΠΈ ΡΡΠΈΡΡΠ²Π°Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² ΠΎΡΠ²Π΅Ρ HTML (ΡΠΌ.
go help importpath
).ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ»ΡΠΆΠ±Ρ Ρ ΠΎΡΡΠΈΠ½Π³Π° ΡΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΡΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ
ΠΠΎΠ΄ Go, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ - ΡΡΠΎ
ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΡΡ ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π» URL-Π°Π΄ΡΠ΅ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.ΠΠΌΠΏΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈΠ· Π²Π°ΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ
morestrings
ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈΠΌ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡhello
.
Π‘Π½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ
$ HOME / hello / morestrings
, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ
ΡΠ΅Π²Π΅ΡΡ.ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΡΠΎΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³
ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ:// ΠΠ°ΠΊΠ΅Ρ morestrings ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ UTF-8 // Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠ²Π΅ΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ "strings". ΠΏΠ°ΠΊΠ΅Ρ morestrings // ReverseRunes Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡΡ ΠΏΠΎ ΡΡΠ½Π°ΠΌ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ. func ReverseRunes (s ΡΡΡΠΎΠΊΠ°) ΡΡΡΠΎΠΊΠ° { r: = [] ΡΡΠ½Π° (ΠΈ) Π΄Π»Ρ i, j: = 0, len (r) -1; ΡΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ
ReverseRunes
Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°
ΠΏΠΈΡΡΠΌΠΎ, ΡΡΠΎ ΡΠΊΡΠΏΠΎΡΡ ,
ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡ Π½Π°ΡΠΈmorestrings
ΠΏΠ°ΠΊΠ΅Ρ.ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Ρ
go build
:$ cd $ HOME / hello / morestrings $ ΠΏΠΎΠΉΡΠΈ ΡΠ±ΠΎΡΠΊΠ° $ΠΡΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ». ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π²
Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ.Π£Π±Π΅Π΄ΠΈΠ²ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ
morestrings
ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈΠΌ.
ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡhello
. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ
$ HOME / hello / hello.go
Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° morestrings:ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡ ( "fmt" "ΠΏΡΠΈΠΌΠ΅Ρ.com / user / hello / morestrings " ) func main () { fmt.Println (morestrings.ReverseRunes ("! oG, olleH")) }Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
hello
:$ ΠΈΠ΄ΠΈ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈ example.com/user/helloΠΠ°ΠΏΡΡΡΠΈΠ² Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
$ ΠΏΡΠΈΠ²Π΅Ρ ΠΡΠΈΠ²Π΅Ρ, Π²ΠΏΠ΅ΡΠ΅Π΄!ΠΠΌΠΏΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈΠ· ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
ΠΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΠΊ Git ΠΈΠ»ΠΈ Mercurial.ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρgo
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ
ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈΠ· ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡgithub.com/google/go-cmp/cmp
Π² Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅:ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡ ( "fmt" "example.com/user/hello/morestrings" "github.com/google/go-cmp/cmp" ) func main () { fmt.Println (morestrings.ReverseRunes ("! oG, olleH")) fmt.Println (cmp.Diff ("Hello World", "Hello Go")) }ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠ°ΠΊ
go install
,go build
ΠΈΠ»ΠΈ
go run
, ΠΊΠΎΠΌΠ°Π½Π΄Π°go
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡ
ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π΅Π³ΠΎ Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ²ΠΎΠΉgo.Π€Π°ΠΉΠ» mod
:$ go install example.com/user/hello go: ΠΏΠΎΠΈΡΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° github.com/google/go-cmp/cmp ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ: Π·Π°Π³ΡΡΠ·ΠΊΠ° github.com/google/go-cmp v0.4.0 go: Π½Π°ΡΠ΅Π» github.com/google/go-cmp/cmp Π² github.com/google/go-cmp v0.4.0 $ ΠΏΡΠΈΠ²Π΅Ρ ΠΡΠΈΠ²Π΅Ρ, Π²ΠΏΠ΅ΡΠ΅Π΄! ΡΡΡΠΎΠΊΠ° ( - "ΠΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ", + "Hello Go", ) $ cat go.mod ΠΌΠΎΠ΄ΡΠ»Ρ example.com/user/hello ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ 1.14 ΡΡΠ΅Π±ΡΠ΅ΡΡΡ github.com/google/go-cmp v0.4.0 $ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π²
pkg / mod
.
ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΠΎΠΉGOPATH
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ.ΠΠ°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠΈΠΌ
ΡΡΠ΅Π΄ΠΈ Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ΡΡΠ΅Π±ΡΡΡ
ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ
ΠΊΠΎΠΌΠ°Π½Π΄Π°go
ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΊΠ°ΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ
ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ»Π°Π³-modcache
Π΄ΠΎΠΎΡΠΈΡΡΠΈΡΡ
:$ go clean -modcache $Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Go ΠΈΠΌΠ΅Π΅Ρ Π»Π΅Π³ΠΊΡΡ ΡΡΠ΅Π΄Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΡΡΠΎΡΡΡΡ ΠΈΠ·
go test
.
ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ ΠΏΠ°ΠΊΠ΅Ρtesting
.ΠΡ ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ΅ΡΡ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠΌΡΡ Π½Π°
_test.go
ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌTestXXX
Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ
func (t * testing.T)
.
Π‘ΡΠ΅Π΄Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ°ΠΊΡΡ ββΡΡΠ½ΠΊΡΠΈΡ;
Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ±ΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρt. ΠΡΠΈΠ±ΠΊΠ°
ΠΈΠ»ΠΈ
Ρ. ΠΡΠΊΠ°Π·
, ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅ΡΠ΄Π°Π²ΡΠΈΠΌΡΡ.ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅ΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ
morestrings
, ΡΠΎΠ·Π΄Π°Π² ΡΠ°ΠΉΠ»
$ HOME / ΠΏΡΠΈΠ²Π΅Ρ / morestrings / reverse_test.ΠΈΠ΄ΡΠΈ
, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Go.ΠΏΠ°ΠΊΠ΅Ρ morestrings ΠΈΠΌΠΏΠΎΡΡΠ½ΠΎΠ΅ "ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅" func TestReverseRunes (t * testing.T) { case: = [] struct { Π², Ρ ΠΎΡΡ ΡΡΡΠΎΠΊΡ } { {"ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ", "dlrow, olleH"}, {"ΠΡΠΈΠ²Π΅Ρ,", "η δΈ, olleH"}, {"", ""}, } for _, c: = range case { ΠΏΠΎΠ»ΡΡΠΈΠ»: = ReverseRunes (c.in) if got! = c.want { t.Errorf ("ReverseRunes (% q) ==% q, Ρ ΠΎΡΡ% q", c.in, got, c.want) } } }ΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΡ Ρ
go test
:$ ΠΏΡΠΎΠΉΡΠΈ ΡΠ΅ΡΡ ΠΠ ΠΠ₯ΠΠΠΠ’Π¬ Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ.com / user / morestrings 0.165s $ΠΠ°ΠΏΡΡΡΠΈΡΠ΅
go help test
ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅
Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅
ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ΡΡ Π½Π°
Π³ΠΎΠ»Π°Π½Π³-Π°Π½ΠΎΠ½Ρ
ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΡΡΡΠ»ΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ Π²ΡΡ ΠΎΠ΄Π΅ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Go.Π‘ΠΌ. Π‘ΠΎΠ²Π΅ΡΡ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π² Effective Go.
ΡΡΠ½ΡΠΉ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Go.ΠΠ·ΡΡΡ
ΠΠΊΡΠΊΡΡΡΠΈΡ ΠΏΠΎ Π³ΠΎ
Π²ΡΡΡΠΈΡΡ ΡΠ·ΡΠΊ
ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ.ΠΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ
ΡΡΠ°ΡΡΠΈ ΠΎ ΡΠ·ΡΠΊΠ΅ Go, Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ .ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΡΠΈ
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΏΡΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΡΠ»ΠΈΠΊΠΎΠ² Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅.
ΡΠ΅ΡΠ²Π΅Ρ Slack ΡΡΡΠ»ΠΈΠΊΠΎΠ²
(Π²ΠΎΠ·ΡΠΌΠΈΡΠ΅ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π΄Π΅ΡΡ).ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΡΡΡΠ»ΠΊΠΈ Π΄Π»Ρ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ° Π³ΠΎ:
Π‘Ρ ΠΎΠ΄ΠΈΡΡ Ρ ΡΠΌΠ°.Π‘ΠΎΠΎΠ±ΡΠ°ΠΉΡΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ..