Skip to content
3 / 15

Условная компиляция: build-Ρ‚Π΅Π³ΠΈ ΠΈ суффиксы ΠΈΠΌΡ‘Π½ Ρ„Π°ΠΉΠ»ΠΎΠ²

Условная компиляция Π² Go Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· прСпроцСссор, Π° Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π±ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ β€” Ρ„Π°ΠΉΠ» Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² сборку, Π»ΠΈΠ±ΠΎ Π½Π΅Ρ‚. Бпособов Π΄Π²Π°. Буффиксы ΠΈΠΌΡ‘Π½: Ρ„Π°ΠΉΠ» store_linux.go компилируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ Linux, store_arm64.go β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ arm64, store_linux_amd64.go β€” ΠΏΠΎΠ΄ ΠΈΡ… сочСтаниС; это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ автоматичСски, Π±Π΅Π· всяких Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ². Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° //go:build: строка ΠΏΠ΅Ρ€Π΅Π΄ объявлСниСм ΠΏΠ°ΠΊΠ΅Ρ‚Π° с логичСским Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ β€” //go:build linux && !cgo ΠΈΠ»ΠΈ //go:build integration. Бинтаксис // +build со старым Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ объявлСн ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ, ΠΈ gofmt сам добавляСт Π½ΠΎΠ²Ρ‹ΠΉ рядом. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ‚Ρ€ΠΈ: платформозависимая рСализация ΠΎΠ΄Π½ΠΎΠ³ΠΎ интСрфСйса, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ тяТёлых тСстов Π·Π° собствСнным Ρ‚Π΅Π³ΠΎΠΌ (//go:build integration ΠΈ запуск Ρ‡Π΅Ρ€Π΅Π· -tags=integration), ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² инструмСнтов ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ сборки. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ β€” Ρ‚Π΅Π³ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Β«Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΡƒΒ»: Π³Ρ€Π°Π½ΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ файловая.

Условная компиляция: build-Ρ‚Π΅Π³ΠΈ ΠΈ суффиксы ΠΈΠΌΡ‘Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² | JScriptiser