Найти Π² Π”Π·Π΅Π½Π΅
PRO Go

πŸ€“generics, ΠΊΠΎΠ³Π΄Π° понимаСшь, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΏΠΈΠΏΠ°ΡΡ‚ΠΈΡ‚ΡŒ β€” это Π½Π΅ ΠΏΡƒΡ‚ΡŒ

😩 ПишСшь ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΡˆΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΏΠΎ нСсколько Ρ€Π°Π·, ΠΈ всё Ρ€Π°Π²Π½ΠΎ Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΠ΅ΡˆΡŒ, Ρ‡Ρ‚ΠΎ это костыли. А ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΡˆΡŒ Ρ‡ΡƒΠΆΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ β€” ΠΈ Ρ‚Π°ΠΌ всё элСгантно, ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ. И Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ: «Ну ΠΊΠ°ΠΊ? Как ΠΎΠ½ это сдСлал?Β» Как выглядит боль Π’Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΡˆΡŒ с простого: func SumInt(a, b int) int { return a + b } func SumFloat(a, b float64) float64 { return a + b } 🀑И Π²Ρ€ΠΎΠ΄Π΅ всё Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Но ΠΏΠΎΡ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ становится 10, 20, 30… И Ρ‚Ρ‹ понимаСшь, Ρ‡Ρ‚ΠΎ просто ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅ΡˆΡŒ ΠΊΠΎΠ΄, Π° любоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π²Π΅Π·Π΄Π΅. Как это Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ красиво func Sum[T int | float64](a, b T) T { return a + b } Одна функция. Один ΠΊΠΎΠ΄. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для всСх Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π”ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ β€” это Π½Π΅ слоТный синтаксис. Π­Ρ‚ΠΎ способ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ чСстно ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ ΠΏΠ»ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΏΠΈΠΈ Ρ€Π°Π΄ΠΈ ΠΊΠΎΠΏΠΈΠΉ.

😩 ПишСшь ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…,

ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΡˆΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΏΠΎ нСсколько Ρ€Π°Π·,

ΠΈ всё Ρ€Π°Π²Π½ΠΎ Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΠ΅ΡˆΡŒ, Ρ‡Ρ‚ΠΎ это костыли.

А ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΡˆΡŒ Ρ‡ΡƒΠΆΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ β€” ΠΈ Ρ‚Π°ΠΌ всё элСгантно, ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ.

И Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ: «Ну ΠΊΠ°ΠΊ? Как ΠΎΠ½ это сдСлал?Β»

Как выглядит боль

Π’Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΡˆΡŒ с простого:

func SumInt(a, b int) int {
return a + b
}
func SumFloat(a, b float64) float64 {
return a + b
}

🀑И Π²Ρ€ΠΎΠ΄Π΅ всё Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

Но ΠΏΠΎΡ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ становится 10, 20, 30…

И Ρ‚Ρ‹ понимаСшь, Ρ‡Ρ‚ΠΎ просто ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅ΡˆΡŒ ΠΊΠΎΠ΄,

Π° любоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π²Π΅Π·Π΄Π΅.

Как это Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ красиво

func Sum[T int | float64](a, b T) T {
return a + b
}

Одна функция.

Один код.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для всСх Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

Π”ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ β€” это Π½Π΅ слоТный синтаксис.

Π­Ρ‚ΠΎ способ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ чСстно ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ ΠΏΠ»ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΏΠΈΠΈ Ρ€Π°Π΄ΠΈ ΠΊΠΎΠΏΠΈΠΉ.