Skip to content
10 / 15

Π”ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ Π² Go: ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΈΠΏΠ°, ограничСния ΠΈ Π³Π΄Π΅ ΠΎΠ½ΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚

Π”ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ появились Π² Go 1.18 ΠΈ устроСны Π½Π°Ρ€ΠΎΡ‡ΠΈΡ‚ΠΎ скромно. Ѐункция ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΈΠΏΠ° Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках, Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ обязан ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ β€” интСрфСйс, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ допустимыС Ρ‚ΠΈΠΏΡ‹. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ интСрфСйс) ΠΈΠ»ΠΈ сами Ρ‚ΠΈΠΏΡ‹ Ρ‡Π΅Ρ€Π΅Π· объСдинСниС: ~int | ~float64, Π³Π΄Π΅ Ρ‚ΠΈΠ»ΡŒΠ΄Π° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΈ любой Ρ‚ΠΈΠΏ с Ρ‚Π°ΠΊΠΈΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΒ». Π’ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π΅ΡΡ‚ΡŒ any, comparable ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ constraints Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… модулях, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ slices ΠΈ maps. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚: Π΄ΠΎ Go 1.27 ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚ΠΈΠΏΠ° β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ; Π² 1.27 Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊ-ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ появились. ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ: Π½Π΅Ρ‚ спСциализации ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ, Π½Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚ΠΈΠΏΠ° ΠΈΠ· Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния, Π° поля структуры ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Ρ‚ΠΈΠΏΠ° Π½Π΅ Π°Π΄Ρ€Π΅ΡΡƒΡŽΡ‚ΡΡ ΠΈΠ½Π°Ρ‡Π΅ ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Π΅Π· ограничСния Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π”ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ Π² Go: ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΈΠΏΠ°, ограничСния ΠΈ Π³Π΄Π΅ ΠΎΠ½ΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ | JScriptiser