Basic
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠ»ΠΈ
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠ°ΠΊΠ΅ΡΡ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ
Π―Π·ΡΠΊ Go ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² , Π° Π½Π΅ ΡΠ°ΠΉΠ»ΠΎΠ². Π’ΠΎ Π΅ΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΡ Π½Π° Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈ Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°, Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ° Go Π²ΡΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ Π²ΡΠ΅ ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅.
Package β Π½Π°Π±ΠΎΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ², Π½Π°Ρ
ΠΎΠ΄ΡΡΠΈΡ
ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΡΠ½Π΅ΡΠ΅Π½Π½ΡΡ
ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΡ ΡΠ΅ΡΠ΅Π· Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ package
(Π² ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π²ΡΡ
ΡΠ°Π·Π½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²). ΠΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠΈΠΏΡ ΠΈ ΡΠΏ Π²ΠΈΠ΄Π½Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°. Go ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΡΡΡΡ Π² ΡΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ.
Module β ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ (ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π°Ρ
ΠΎΠ΄ΡΡΠΈΠΉΡΡ Π² ΠΊΠΎΡΠ½Π΅ (/
) ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ). Π€Π°ΠΉΠ» go.mod
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ module path β import path prefix Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ.
Π§ΡΠΎ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π² Go-ΠΏΡΠΎΠ΅ΠΊΡΠ΅
Π Π°Π±ΠΎΡΠ° Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ
go.mod
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ go.mod
ΡΠ°ΠΉΠ». Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½. Π’Π°ΠΊ ΠΆΠ΅ ΡΡΠΎΡ ΡΠ°ΠΉΠ» Ρ
ΡΠ°Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΡΡΠΎ Π²Ρ (main_project
) ΠΈΠΌΠ΅Π΅ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° (test_project
), ΡΠΎΠ³Π΄Π° Π² go.mod Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΡΠΎΡΠΊΡ:
Π’Π΅ΠΏΠ΅ΡΡ Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅ΡΠ΅ Π½Π΅ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΠ»ΠΈ ΡΠΎ ΠΆΠ΅, Ρ ΠΏΠΎΠΌΠΎΡΡΡ go mod
:
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ go.mod
(-u
ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ Π² GOPATH
, Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ):
ΠΡΠΈΡΡΠΊΠ° ΠΎΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΠ΅ΡΠ΅Π΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅Π»ΠΈΠ·Π° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΡΠΈΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΎΡ Π»ΠΈΡΠ½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
gc - ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ·ΡΠΊΠ° Go. Π Π΅Π³ΠΎ ΡΠΎΡΡΠ°Π² Π²Ρ ΠΎΠ΄ΡΡ:
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ 5g, 6g ΠΈ 8g
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ 51, 61 ΠΈ 81
godoc β Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
5 β ARM 6 β AMD64 8 β Intel 386
Π ΡΡΠ°ΡΡΡΡ, Π΅ΡΡΡ ΠΎΠ΄Π½Π° Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ ΠΎΠ±Π΅ΡΡΠΊΠ° β go.
Π ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ Go Π²Ρ
ΠΎΠ΄ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ cgo
, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° C Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ
Π½Π° ΡΠ·ΡΠΊΠ΅ Go. Π Linux ΠΈ BSD-ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΠΈΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π½Π° C ΠΈ C++ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° SWIG (www.swig.org). ΠΠΎΠΌΠΈΠΌΠΎ gc
, ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ gccgo
(ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° gcc
β GNU Compiler Collection β Π΄Π»Ρ ΡΠ·ΡΠΊΠ° Go).
ΠΡΠ°Π²ΠΊΠ°, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ Π·Π°ΠΏΡΡΠΊ
go cmd
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ go cli: https://pkg.go.dev/cmd/go
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ
tools.go
ΠΠ΅ Π·Π½Π°Ρ Π΄Π»Ρ ΡΠ΅Π³ΠΎ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π±ΠΈΠ½Π°ΡΠ΅ΠΉ/ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ
// +build tools
β build constraint a.k.a. build tag
ΠΠΎΠ΄ΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΡ
ΠΡΡΡ ΡΠ°ΠΊΠ°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ go generate
. ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π΄ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (go build
). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΡΡΠΈΡΡ bash-ΡΠΊΡΠΈΠΏΡ, ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ proto-ΡΡΡΡΠΊΡΡΡ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ dev-Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ...
ΠΠ°ΠΊ Π²ΡΡΡΠΎΠΈΡΡ ΡΡΠΎ Π² ΠΏΡΠΎΠ΅ΠΊΡ β ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ΄ΠΎΠΌ Ρ main.go
, ΡΠ°ΠΉΠ» generate.go
:
ΠΠ° ΡΡΠ°ΠΏΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° (Π΄ΠΎ go build
) ΡΠΊΡΠΈΠΏΡ generate.go
Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½.
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
Last updated