{"id":7090,"date":"2026-09-28T11:00:42","date_gmt":"2026-09-28T07:30:42","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=7090"},"modified":"2026-09-28T11:04:38","modified_gmt":"2026-09-28T07:34:38","slug":"%d9%86%d8%ad%d9%88%d9%87-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-generic-%d8%af%d8%b1-go","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d9%86%d8%ad%d9%88%d9%87-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-generic-%d8%af%d8%b1-go\/","title":{"rendered":"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Generic \u062f\u0631 Go"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627\u06cc Go \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u062f\u0650 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0648 \u0627\u0645\u0646-\u0627\u0632-\u0646\u0638\u0631-\u062a\u0627\u06cc\u067e\u06cc \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u06a9\u0647 \u0628\u0627 \u0686\u0646\u062f\u06cc\u0646 \u062a\u0627\u06cc\u067e \u06a9\u0627\u0631 \u06a9\u0646\u062f\u2014\u0628\u062f\u0648\u0646 \u0627\u0632 \u062f\u0633\u062a \u062f\u0627\u062f\u0646 \u0628\u0631\u0631\u0633\u06cc \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644. \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e (Placeholder\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627) \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u0647 \u0648\u2014\u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0645\u0627\u06cc\u0644\u2014\u0628\u0627 Constraint\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0645\u062d\u062f\u0648\u062f\u0634\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u061b \u062a\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631\u0633\u062a \u0631\u0627 \u0627\u0644\u0632\u0627\u0645\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0627\u0632 Type Assertion\u0647\u0627 \u0648 \u062e\u0637\u0627\u0647\u0627\u06cc \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u063a\u0644\u0628 \u0628\u0627 <code>interface{}<\/code> \u0645\u06cc\u200c\u0622\u06cc\u0646\u062f \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0633\u062a-\u06a9\u0627\u0631\u062a \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f: \u0628\u0627 Deck\u0627\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u062a\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a <code>interface{}<\/code> \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0634\u0631\u0648\u0639 \u06a9\u0631\u062f\u0647\u061b \u0633\u067e\u0633 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Generic\u0647\u0627 Refactor\u0634 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u061b \u062a\u0627\u06cc\u067e \u06a9\u0627\u0631\u062a \u062f\u0648\u0645\u06cc \u0627\u0636\u0627\u0641\u0647\u060c Deck \u0631\u0627 \u0641\u0642\u0637 \u0628\u0647 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u06a9\u0627\u0631\u062a \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0647 \u0648 \u062a\u0627\u0628\u0639 Generic\u0627\u06cc \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f \u06a9\u0647 \u0628\u0627 \u0647\u0631 \u06a9\u0627\u0631\u062a\u06cc \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f \u06a9\u0650\u06cc \u0627\u0632 Generic\u0647\u0627 \u062f\u0631 Go \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u060c Constraint\u0647\u0627 \u0648 \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u062a\u0627\u06cc\u067e \u062f\u0631 \u0639\u0645\u0644 \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Go \u062f\u0631 \u0646\u0633\u062e\u0647 \u06f1.\u06f1\u06f8 Generic\u0647\u0627 \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0631\u062f \u0648 \u0646\u0633\u062e\u0647\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc\u060c \u0627\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0631\u0627 \u067e\u0627\u06cc\u062f\u0627\u0631\u062a\u0631 \u06a9\u0631\u062f\u0647\u200c\u0627\u0646\u062f. \u0633\u06cc\u0646\u062a\u06a9\u0633 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0648 \u0627\u06cc\u062f\u0647\u0654 Constraint-\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646-\u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u060c \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u062c\u0627\u0646\u0634\u06cc\u0646\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u062f\u0631 \u0647\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e \u06cc\u0627 \u062a\u0627\u0628\u0639 Generic\u2014\u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0628\u0627 \u062d\u0641\u0638 \u062a\u0627\u06cc\u067e\u06cc\u0646\u06af \u0642\u0648\u06cc\u2014\u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 tutorial \u0641\u0631\u0636 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0631\u0648\u06cc Toolchain \u0627\u0633\u062aabile \u0641\u0639\u0644\u06cc (Go 1.18 \u06cc\u0627 \u0628\u0639\u062f\u062a\u0631) \u0647\u0633\u062a\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 tutorial \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Go 1.18 \u06cc\u0627 \u0628\u0639\u062f\u062a\u0631 \u0646\u0635\u0628\u200c\u0634\u062f\u0647.<\/strong> \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0646\u062d\u0648\u0647 \u0646\u0635\u0628 Go\u00bb \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0639\u0627\u0645\u0644\u200c\u062a\u0627\u0646 \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u062f\u0631\u06a9 \u062e\u0648\u0628\u06cc \u0627\u0632 \u0632\u0628\u0627\u0646 Go<\/strong>\u2014\u0645\u0627\u0646\u0646\u062f \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u060c \u00ab\u0646\u062d\u0648\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0648 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062a\u0648\u0627\u0628\u0639 \u062f\u0631 Go\u00bb\u060c \u00ab\u062a\u0639\u0631\u06cc\u0641 Struct\u0647\u0627 \u062f\u0631 Go\u00bb\u060c \u062d\u0644\u0642\u0647\u0647\u0627\u06cc for \u0648 Slice\u0647\u0627. \u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0628\u06cc\u0634\u062a\u0631 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f\u060c \u0633\u0631\u06cc \u00ab\u0646\u062d\u0648\u0647 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u062f\u0631 Go\u00bb \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0622\u0645\u0648\u0632\u0634\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc\u062f\u0647\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u06a9\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Generic\u0647\u0627\u06cc Go \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u062f\u0631 \u0628\u0631\u0627\u06a9\u062a \u0645\u0631\u0628\u0639\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f (\u0645\u062b\u0644\u0627\u064b <code>[T any]<\/code>\u060c <code>[C Card]<\/code>)\u2014\u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627 \u0648 \u062a\u0648\u0627\u0628\u0639. \u06a9\u062f \u0627\u0645\u0646-\u0627\u0632-\u0646\u0638\u0631-\u062a\u0627\u06cc\u067e\u06cc \u0648 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f\u2014\u0628\u062f\u0648\u0646 \u0627\u0632 \u062f\u0633\u062a \u062f\u0627\u062f\u0646 \u0628\u0631\u0631\u0633\u06cc Static\u2014\u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u0646\u062f.<\/li>\n\n\n\n<li><strong>Constraint\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc<\/strong> \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u062a\u0627\u06cc\u067e \u06cc\u0627 \u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u062a\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u0634\u0648\u0646\u062f\u061b \u0645\u0634\u062e\u0635 \u0645\u06cc\u06a9\u0646\u0646\u062f \u06a9\u062f\u0627\u0645 \u062a\u0627\u06cc\u067e\u0647\u0627 \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e\u06cc \u0628\u0627\u0634\u0646\u062f \u0648 \u06a9\u062f\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u062c\u0627\u0632\u0646\u062f (\u0645\u062b\u0644\u0627\u064b <code>Name()<\/code>\u060c <code>&lt;<\/code>\u060c <code>==<\/code>).<\/li>\n\n\n\n<li><strong>\u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u062a\u0627\u06cc\u067e<\/strong> \u0627\u063a\u0644\u0628 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u062f\u0647\u062f \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc \u062f\u0631 \u0645\u062d\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062d\u0630\u0641 \u0634\u0648\u0646\u062f\u2014\u0648\u0642\u062a\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0628\u062a\u0648\u0627\u0646\u062f \u0627\u0632 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0647\u0627\u06cc \u062a\u0627\u0628\u0639 \u0627\u0633\u062a\u0646\u0628\u0627\u0637\u0634\u0627\u0646 \u06a9\u0646\u062f.<\/li>\n\n\n\n<li>\u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0632\u0627\u0639\u0627\u062a \u0631\u0641\u062a\u0627\u0631\u06cc \u0648 \u0628\u0627\u0632-\u0627\u0646\u062a\u0647\u0627\u060c \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0631\u0627 \u062a\u0631\u062c\u06cc\u062d \u0628\u062f\u0647\u06cc\u062f\u061b \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0632\u0627\u0639\u0627\u062a \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0648 \u062d\u0641\u0638-\u062a\u0627\u06cc\u067e \u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0627\u0645\u0646-\u0627\u0632-\u0646\u0638\u0631-\u062a\u0627\u06cc\u067e\u06cc\u060c Generic. Constraint\u0647\u0627 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0647 \u0648 \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0627\u0636\u0627\u0641\u06cc \u067e\u0631\u0647\u06cc\u0632 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>Generic\u0647\u0627\u06cc Go \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u0647\u0627\u06cc \u0639\u0645\u062f\u06cc \u062f\u0627\u0631\u0646\u062f (\u0646\u0628\u0648\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0633\u0637\u062d-\u0645\u062a\u062f\u060c \u0646\u0628\u0648\u062f Operator Overloading\u060c \u0646\u0628\u0648\u062f Specialization). \u0628\u0639\u062f \u0627\u0632 \u0645\u0647\u0627\u062c\u0631\u062a \u06a9\u062f \u0645\u0648\u062c\u0648\u062f\u060c \u0627\u0632 <code>go build .\/...<\/code> \u0648 <code>go vet .\/...<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Collection\u0647\u0627\u06cc Go \u0628\u062f\u0648\u0646 Generic<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Go \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0631\u0627\u2014from \u0637\u0631\u06cc\u0642 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u0647\u0627\u2014\u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u062f \u0648 \u06a9\u062f \u0632\u06cc\u0627\u062f\u06cc \u0628\u062f\u0648\u0646 Generic \u062e\u0648\u0628 \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u062f. \u0647\u0632\u06cc\u0646\u0647 \u062f\u0631 \u0645\u062d\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0638\u0627\u0647\u0631 \u0645\u06cc\u0634\u0648\u062f: \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0627 \u062f\u0631 <code>interface{}<\/code> \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647\u061b \u0633\u067e\u0633 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u062a\u0627\u06cc\u067e \u0639\u06cc\u0646\u06cc Assert \u06a9\u0646\u06cc\u062f\u2014which \u0628\u0631\u0631\u0633\u06cc \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a \u0645\u06cc\u062f\u0647\u062f \u0648 Boilerplate \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u06cc\u0633\u062a\u0645\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u062f\u0631 \u0632\u0628\u0627\u0646\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u0646\u0648\u06cc\u0633\u06cc \u0639\u0645\u0648\u0645\u0627\u064b \u0628\u0647 \u062f\u0648 \u062f\u0633\u062a\u0647 \u0637\u0628\u0642\u0647\u0628\u0646\u062f\u06cc \u0645\u06cc\u0634\u0648\u0646\u062f: \u062a\u0627\u06cc\u067e\u06cc\u0646\u06af \u0648 \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e. \u0632\u0628\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0627\u0632 \u062a\u0627\u06cc\u067e\u06cc\u0646\u06af \u0642\u0648\u06cc \u06cc\u0627 \u0636\u0639\u06cc\u0641 \u0648 \u0628\u0631\u0631\u0633\u06cc Static \u06cc\u0627 Dynamic \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f. Go \u06a9\u0627\u0645\u0644\u0627\u064b \u062f\u0631 \u062f\u0633\u062a\u0647 \u0632\u0628\u0627\u0646\u0647\u0627\u06cc \u0642\u0648\u06cc-\u062a\u0627\u06cc\u067e \u0648 Static-\u0628\u0631\u0631\u0633\u06cc \u062c\u0627 \u0645\u06cc\u06af\u06cc\u0631\u062f. <strong>\u0642\u0648\u06cc-\u062a\u0627\u06cc\u067e<\/strong> \u0628\u0648\u062f\u0646 \u06cc\u0639\u0646\u06cc Go \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u06a9\u0646\u062f \u0645\u0642\u062f\u0627\u0631\u06cc \u062f\u0631 \u0645\u062a\u063a\u06cc\u0631\u06cc \u0628\u0627 \u062a\u0627\u06cc\u067e \u0645\u062a\u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0631\u062f\u061b \u067e\u0633 \u0645\u062b\u0644\u0627\u064b \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0642\u062f\u0627\u0631 int \u0631\u0627 \u062f\u0631 \u0645\u062a\u063a\u06cc\u0631 string \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f. \u0633\u06cc\u0633\u062a\u0645 \u062a\u0627\u06cc\u067e\u0650 Static-\u0628\u0631\u0631\u0633\u06cc \u0647\u0645 \u06cc\u0639\u0646\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 Go \u0627\u06cc\u0646 \u0642\u0648\u0627\u0639\u062f \u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0686\u06a9 \u0645\u06cc\u06a9\u0646\u062f\u2014not \u0648\u0642\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0632\u06cc\u062a \u0632\u0628\u0627\u0646 \u0642\u0648\u06cc-\u062a\u0627\u06cc\u067e \u0648 Static-\u0628\u0631\u0631\u0633\u06cc \u0645\u062b\u0644 Go \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0646\u062a\u0634\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0627\u0634\u062a\u0628\u0627\u0647\u0627\u062a \u0628\u0627\u0644\u0642\u0648\u0647 \u0628\u0627\u062e\u0628\u0631\u062a\u0627\u0646 \u0645\u06cc\u06a9\u0646\u062f\u2014which \u0627\u0632 \u0628\u0631\u062e\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627\u06cc\u06cc\u0650 \u00ab\u062a\u0627\u06cc\u067e \u0646\u0627\u0645\u0639\u062a\u0628\u0631\u00bb \u0627\u062c\u062a\u0646\u0627\u0628 \u0645\u06cc\u0634\u0648\u062f. \u0627\u0645\u0627 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u06cc \u0647\u0645 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u062f: \u0628\u0627\u06cc\u062f \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0635\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0627\u0631\u06cc\u062f \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0628\u062f\u0627\u0646\u06cc\u062f. \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0627\u06cc\u067e <code>interface{}<\/code> (\u06cc\u0627 Alias \u06cc\u0639\u0646\u06cc <code>any<\/code>) \u0627\u0633\u062a. interface{} \u0628\u0627 \u0647\u0631 \u0645\u0642\u062f\u0627\u0631\u06cc \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u062f\u2014\u0686\u0648\u0646 \u0647\u06cc\u0686 \u0645\u062a\u062f \u0627\u0644\u0632\u0627\u0645\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0646\u0645\u06cc\u06a9\u0646\u062f\u061b \u067e\u0633 \u0647\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0622\u0646 \u0631\u0627 \u0627\u0631\u0636\u0627 \u0645\u06cc\u06a9\u0646\u062f. \u062f\u0631 \u0639\u0645\u0644\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0627\u06cc\u067e \u0631\u0627 \u062f\u0631 \u0645\u062d\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0627\u0632 \u062f\u0633\u062a \u0645\u06cc\u062f\u0647\u06cc\u062f \u0648 \u0628\u0631\u0627\u06cc \u0628\u0631\u06af\u0634\u062a\u0646 \u0628\u0647 \u062a\u0627\u06cc\u067e \u0639\u06cc\u0646\u06cc \u0628\u0627\u06cc\u062f \u0627\u0632 Type Assertion \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u2014which \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 Generic\u0647\u0627 \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0645\u06cc\u0628\u062e\u0634\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 interface{}<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u062a\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 interface{} \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u06a9\u0627\u0631\u062a\u0647\u0627\u060c \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0631\u0627\u06cc \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u067e\u0631\u0648\u0698\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 tutorial \u0627\u0632 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc projects \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0648\u0644\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc projects \u0631\u0627 \u0633\u0627\u062e\u062a\u0647 \u0648 \u0648\u0627\u0631\u062f\u0634 \u0634\u0648\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir projects\ncd projects<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0648\u0627\u0631\u062f\u0634 \u0634\u0648\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0627\u0632 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc generics \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir generics\ncd generics<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631\u0648\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc generics\u060c \u0628\u0627 nano \u06cc\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647\u062a\u0627\u0646 \u0641\u0627\u06cc\u0644 main.go \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano main.go<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0641\u0627\u06cc\u0644 main.go\u060c \u0628\u0627 \u0627\u0641\u0632\u0648\u062f\u0646 \u062a\u0639\u0631\u06cc\u0641 \u067e\u06a9\u06cc\u062c \u0648 Import \u06a9\u0631\u062f\u0646 \u067e\u06a9\u06cc\u062c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package main\n\nimport (\n    \"fmt\"\n    \"math\/rand\"\n    \"os\"\n)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0639\u0631\u06cc\u0641 <code>package main<\/code> \u0628\u0647 Go \u0645\u06cc\u06af\u0648\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0628\u0627\u06cc\u0646\u0631\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u062f \u062a\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u062c\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f\u061b \u0648 \u062f\u0633\u062a\u0648\u0631 import \u0628\u0647 Go \u0645\u06cc\u06af\u0648\u06cc\u062f \u06a9\u062f\u0627\u0645 \u067e\u06a9\u06cc\u062c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06a9\u062f \u0628\u0639\u062f\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627\u060c \u062a\u0627\u06cc\u067e PlayingCard \u0648 \u062a\u0648\u0627\u0628\u0639 \u0648 \u0645\u062a\u062f\u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637\u0634 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type PlayingCard struct {\n    Suit string\n    Rank string\n}\n\nfunc NewPlayingCard(suit string, card string) *PlayingCard {\n    return &amp;PlayingCard{Suit: suit, Rank: card}\n}\n\nfunc (pc *PlayingCard) String() string {\n    return fmt.Sprintf(\"%s of %s\", pc.Rank, pc.Suit)\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0637\u0639\u0647\u060c Struct\u0627\u06cc \u0628\u0647 \u0646\u0627\u0645 PlayingCard \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc\u0647\u0627\u06cc Suit \u0648 Rank \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u06a9\u0646\u06cc\u062f \u062a\u0627 \u06a9\u0627\u0631\u062a\u0647\u0627\u06cc \u062f\u0633\u062a\u0650 \u06f5\u06f2\u062a\u0627\u06cc\u06cc \u0628\u0627\u0632\u06cc \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u062f. Suit \u06cc\u06a9\u06cc \u0627\u0632 Diamonds\u060c Hearts\u060c Clubs \u06cc\u0627 Spades \u0627\u0633\u062a\u061b \u0648 Rank \u0627\u0632 A\u060c \u06f2\u060c \u06f3 \u0648 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0634\u06a9\u0644 \u062a\u0627 K.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 NewPlayingCard \u0631\u0627 \u0647\u0645\u2014\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Constructor \u0628\u0631\u0627\u06cc Struct\u2014\u0648 \u0645\u062a\u062f String \u0631\u0627 \u06a9\u0647 \u062e\u0627\u0644 \u0648 \u0631\u062a\u0628\u0647 \u06a9\u0627\u0631\u062a \u0631\u0627 \u0628\u0627 fmt.Sprintf \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0627\u0646\u062f \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633\u060c \u062a\u0627\u06cc\u067e Deck \u0631\u0627 \u0628\u0627 \u0645\u062a\u062f\u0647\u0627\u06cc AddCard \u0648 RandomCard\u2014to\u200c\u0647\u0645\u0631\u0627\u0647 \u062a\u0627\u0628\u0639 NewPlayingCardDeck \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a <code>*Deck<\/code> \u067e\u0631\u0634\u062f\u0647 \u0628\u0627 \u0647\u0631 \u06f5\u06f2 \u06a9\u0627\u0631\u062a \u0628\u0627\u0632\u06cc\u2014\u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type Deck struct {\n    cards &#91;]interface{}\n}\n\nfunc NewPlayingCardDeck() *Deck {\n    suits := &#91;]string{\"Diamonds\", \"Hearts\", \"Clubs\", \"Spades\"}\n    ranks := &#91;]string{\"A\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"J\", \"Q\", \"K\"}\n\n    deck := &amp;Deck{}\n    for _, suit := range suits {\n        for _, rank := range ranks {\n            deck.AddCard(NewPlayingCard(suit, rank))\n        }\n    }\n    return deck\n}\n\nfunc (d *Deck) AddCard(card interface{}) {\n    d.cards = append(d.cards, card)\n}\n\nfunc (d *Deck) RandomCard() interface{} {\n    cardIdx := rand.Intn(len(d.cards))\n    return d.cards&#91;cardIdx]\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Deck\u060c \u0641\u06cc\u0644\u062f\u06cc \u0628\u0647 \u0646\u0627\u0645 cards \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0634\u062a\u0646 Slice\u0627\u06cc \u0627\u0632 \u06a9\u0627\u0631\u062a\u0647\u0627 \u0645\u06cc\u0633\u0627\u0632\u06cc\u062f. \u0686\u0648\u0646 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f Deck \u0628\u062a\u0648\u0627\u0646\u062f \u0686\u0646\u062f\u06cc\u0646 \u062a\u0627\u06cc\u067e \u0645\u062a\u0641\u0627\u0648\u062a \u06a9\u0627\u0631\u062a \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u062f\u060c \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0642\u0637 <code>[]*PlayingCard<\/code> \u062a\u0639\u0631\u06cc\u0641\u0634 \u06a9\u0646\u06cc\u062f. \u0628\u0647\u200c\u062c\u0627\u06cc\u0634 <code>[]interface{}<\/code> \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u06a9\u0646\u06cc\u062f \u062a\u0627 \u0647\u0631 \u062a\u0627\u06cc\u067e \u06a9\u0627\u0631\u062a\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 \u0622\u06cc\u0646\u062f\u0647 \u0628\u0633\u0627\u0632\u06cc\u062f \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0641\u06cc\u0644\u062f []interface{}\u060c \u0645\u062a\u062f AddCard\u0627\u06cc \u0631\u0627 \u0647\u0645 \u0645\u06cc\u0633\u0627\u0632\u06cc\u062f \u06a9\u0647 \u0647\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e interface{} \u0631\u0627 \u0645\u06cc\u067e\u0630\u06cc\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062a\u062f RandomCard \u0631\u0627 \u0647\u0645 \u0645\u06cc\u0633\u0627\u0632\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0631\u062a \u062a\u0635\u0627\u062f\u0641\u06cc\u0627\u06cc \u0631\u0627 \u0627\u0632 Slice cards \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0627\u0646\u062f. \u0627\u06cc\u0646 \u0645\u062a\u062f \u0627\u0632 \u067e\u06a9\u06cc\u062c math\/rand \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f Index \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u062f. \u0627\u0632 Go 1.20\u060c \u062a\u0648\u0627\u0628\u0639 \u0633\u0631\u0627\u0633\u0631\u06cc rand \u062e\u0648\u062f\u06a9\u0627\u0631 Seed \u0645\u06cc\u0634\u0648\u0646\u062f\u061b \u067e\u0633 Generator \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0648 Seed \u062f\u0633\u062a\u06cc \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a. <code>rand.Intn(len(d.cards))<\/code> \u0645\u0642\u062f\u0627\u0631 int\u0627\u06cc \u0631\u0627 \u062f\u0631 \u0628\u0627\u0632\u0647 [0, len(d.cards)) \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0627\u0646\u062f.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0647\u0634\u062f\u0627\u0631:<\/strong> \u0645\u0631\u0627\u0642\u0628 \u0628\u0627\u0634\u06cc\u062f \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u0647\u0627\u06cc\u062a\u0627\u0646 \u0627\u0632 \u06a9\u062f\u0627\u0645 Generator \u0639\u062f\u062f \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f. \u067e\u06a9\u06cc\u062c math\/rand \u0627\u0645\u0646-\u0627\u0632-\u0646\u0638\u0631-\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0646\u06cc\u0633\u062a \u0648 \u0646\u0628\u0627\u06cc\u062f \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u0647\u0627\u06cc \u062d\u0633\u0627\u0633-\u0628\u0647-\u0627\u0645\u0646\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f. \u067e\u06a9\u06cc\u062c crypto\/rand \u0628\u0631\u0627\u06cc \u0622\u0646 \u0645\u0648\u0627\u0631\u062f\u060c Generator \u0627\u0645\u0646-\u0627\u0632-\u0646\u0638\u0631-\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u062a\u0627\u0628\u0639 NewPlayingCardDeck \u0645\u0642\u062f\u0627\u0631 *Deck\u0627\u06cc \u0631\u0627\u2014\u067e\u0631\u0634\u062f\u0647 \u0628\u0627 \u0647\u0645\u0647 \u06a9\u0627\u0631\u062a\u0647\u0627\u06cc \u062f\u0633\u062a \u0628\u0627\u0632\u06cc\u2014\u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0627\u0646\u062f. \u0627\u0632 \u062f\u0648 Slice \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f: \u06cc\u06a9\u06cc \u0628\u0627 \u0647\u0645\u0647 \u062e\u0627\u0644\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0648 \u06cc\u06a9\u06cc \u0628\u0627 \u0647\u0645\u0647 \u0631\u062a\u0628\u0647\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f\u061b \u0633\u067e\u0633 \u0631\u0648\u06cc \u0647\u0631 \u0645\u0642\u062f\u0627\u0631 Loop \u0645\u06cc\u0632\u0646\u06cc\u062f \u062a\u0627 *PlayingCard \u062c\u062f\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 \u062a\u0631\u06a9\u06cc\u0628 \u0633\u0627\u062e\u062a\u0647 \u0648 \u0628\u0627 AddCard \u0628\u0647 Deck \u0627\u0636\u0627\u0641\u0647 \u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0627\u0628\u0639 main \u0648 \u0645\u0634\u06a9\u0644 Type Assertion<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 main \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0634\u06cc\u062f\u0646 \u06a9\u0627\u0631\u062a\u0647\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func main() {\n    deck := NewPlayingCardDeck()\n\n    fmt.Printf(\"--- drawing playing card ---\\n\")\n    card := deck.RandomCard()\n    fmt.Printf(\"drew card: %s\\n\", card)\n\n    playingCard, ok := card.(*PlayingCard)\n    if !ok {\n        fmt.Printf(\"card received wasn't a playing card!\")\n        os.Exit(1)\n    }\n    fmt.Printf(\"card suit: %s\\n\", playingCard.Suit)\n    fmt.Printf(\"card rank: %s\\n\", playingCard.Rank)\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 main\u060c \u0627\u0648\u0644 \u062f\u0633\u062a \u062c\u062f\u06cc\u062f\u06cc \u0628\u0627 NewPlayingCardDeck \u0633\u0627\u062e\u062a\u0647 \u0648 \u0628\u0647 deck \u0627\u0646\u062a\u0635\u0627\u0628 \u0645\u06cc\u06a9\u0646\u06cc\u062f. \u0633\u067e\u0633 RandomCard \u0631\u0627 \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u06a9\u0627\u0631\u062a \u062a\u0635\u0627\u062f\u0641\u06cc \u0635\u062f\u0627 \u0645\u06cc\u0632\u0646\u06cc\u062f. \u0686\u0648\u0646 \u062a\u0627\u06cc\u067e \u0645\u062a\u063a\u06cc\u0631 card \u06cc\u0639\u0646\u06cc interface{} \u0627\u0633\u062a\u060c \u0628\u0627\u06cc\u062f \u0627\u0632 <strong>Type Assertion<\/strong> \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 Reference \u0628\u0647 \u062a\u0627\u06cc\u067e \u0627\u0635\u0644\u06cc <code>*PlayingCard<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u062a\u0627\u06cc\u067e \u062f\u0631\u0648\u0646 card \u06cc\u0639\u0646\u06cc *PlayingCard \u0646\u0628\u0627\u0634\u062f\u060c ok \u06cc\u0639\u0646\u06cc false \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0686\u0627\u067e \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0627 \u06a9\u062f \u06f1 \u062e\u0627\u0631\u062c \u0645\u06cc\u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>go run main.go<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062e\u0631\u0648\u062c\u06cc\u060c \u06a9\u0627\u0631\u062a\u0650 \u062a\u0635\u0627\u062f\u0641\u06cc\u0650 \u0627\u0646\u062a\u062e\u0627\u0628\u0634\u062f\u0647\u2014to\u200c\u0647\u0645\u0631\u0627\u0647 \u062e\u0627\u0644 \u0648 \u0631\u062a\u0628\u0647\u0627\u0634\u2014\u0631\u0627 \u0628\u0627\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--- drawing playing card ---\ndrew card: Q of Diamonds\ncard suit: Diamonds\ncard rank: Q<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0628\u0647\u200c\u0627\u0634\u062a\u0628\u0627\u0647 TradingCard\u0627\u06cc \u0628\u0647 \u062f\u0633\u062a interface{}\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f\u060c Assertion \u062f\u0631 main \u0634\u06a9\u0633\u062a \u0645\u06cc\u062e\u0648\u0631\u062f: ok \u06cc\u0639\u0646\u06cc false \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u062e\u0637\u0627 \u062e\u0627\u0631\u062c \u0645\u06cc\u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u0639\u0645\u062f\u0627\u064b \u0627\u0634\u062a\u0628\u0627\u0647: \u0627\u0641\u0632\u0648\u062f\u0646 TradingCard \u0628\u0647 \u062f\u0633\u062a PlayingCard\ndeck.AddCard(&amp;TradingCard{CollectableName: \"Sammy\"})\ncard := deck.RandomCard()\nplayingCard, ok := card.(*PlayingCard)\nif !ok {\n    fmt.Printf(\"card received wasn't a playing card!\\n\")\n    os.Exit(1)\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0622\u0646 \u06a9\u0627\u0631\u062a \u0627\u0634\u062a\u0628\u0627\u0647 \u06a9\u0634\u06cc\u062f\u0647 \u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--- drawing playing card ---\ncard received wasn't a playing card!\nexit status 1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u067e\u0630\u06cc\u0631\u0641\u062a\u2014\u0686\u0648\u0646 AddCard \u06cc\u0639\u0646\u06cc interface{} \u0645\u06cc\u06af\u06cc\u0631\u062f\u061b \u0634\u06a9\u0633\u062a \u0641\u0642\u0637 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0638\u0627\u0647\u0631 \u0645\u06cc\u0634\u0648\u062f. \u0622\u0646 Type Assertion \u0628\u0631\u0627\u06cc \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0634\u06cc\u062f\u0646 \u0645\u0642\u062f\u0627\u0631\u06cc \u0627\u0632 \u062f\u0633\u062a \u0644\u0627\u0632\u0645 \u0627\u0633\u062a\u061b \u0648 \u0627\u06af\u0631 \u06a9\u0633\u06cc \u062a\u0627\u06cc\u067e \u06a9\u0627\u0631\u062a \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0628\u0647 \u0647\u0645\u0627\u0646 \u062f\u0633\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u062f\u060c Assertion \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0634\u06a9\u0633\u062a \u0628\u062e\u0648\u0631\u062f. <strong>Generic \u06a9\u0631\u062f\u0646 \u062f\u0633\u062a\u060c \u0647\u0645 Assertion \u0648 \u0647\u0645 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0634\u06a9\u0633\u062a \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc\u06a9\u0646\u062f.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Collection\u0647\u0627\u06cc Go \u0628\u0627 Generic<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u062f\u0647\u0646\u062f \u06cc\u06a9 \u062a\u0627\u06cc\u067e Deck \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u06a9\u0647 \u0628\u0627 \u0647\u0631 \u062a\u0627\u06cc\u067e \u06a9\u0627\u0631\u062a\u06cc \u06a9\u0627\u0631 \u06a9\u0646\u062f\u2014\u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0628\u0627 \u062a\u0627\u06cc\u067e\u06cc\u0646\u06af \u06a9\u0627\u0645\u0644: \u0628\u062f\u0648\u0646 interface{} \u0648 \u0628\u062f\u0648\u0646 Type Assertion \u062f\u0631 \u0645\u062d\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc. \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062a\u0627\u06cc\u067e \u06a9\u0627\u0631\u062a \u0631\u0627 \u062f\u0631 \u0647\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0644\u0632\u0627\u0645\u06cc \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0628\u062f\u06cc\u0644 Deck \u0628\u0647 \u062a\u0627\u06cc\u067e Generic<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 main.go \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0647 \u0648 Import \u067e\u06a9\u06cc\u062c os \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package main\n\nimport (\n    \"fmt\"\n    \"math\/rand\"\n)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0645\u06cc\u0628\u06cc\u0646\u06cc\u062f\u060c \u062f\u06cc\u06af\u0631 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0627\u0632 os.Exit \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u2014\u067e\u0633 \u062d\u0630\u0641 \u0627\u06cc\u0646 Import \u0627\u0645\u0646 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633\u060c Struct \u06cc\u0639\u0646\u06cc Deck \u0631\u0627 \u0628\u0631\u0627\u06cc Generic \u0634\u062f\u0646 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type Deck&#91;C any] struct {\n    cards &#91;]C\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u06cc\u0646\u062a\u06a9\u0633 \u062c\u062f\u06cc\u062f\u0650 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Generic\u0647\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a Placeholder\u0647\u0627 \u06cc\u0627 <strong>\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e<\/strong> \u062f\u0631\u0648\u0646 \u062a\u0639\u0631\u06cc\u0641 Struct \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u06a9\u0646\u062f. \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0631\u0627 \u0634\u0628\u06cc\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u0628\u0639 \u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u062f. \u0647\u0646\u06af\u0627\u0645 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062a\u0627\u0628\u0639\u060c \u0628\u0631\u0627\u06cc \u0647\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u0628\u0639\u06cc \u0645\u0642\u062f\u0627\u0631 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u06cc\u062f. \u0647\u0645\u06cc\u0646\u0637\u0648\u0631\u060c \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u0645\u0642\u062f\u0627\u0631 \u062a\u0627\u06cc\u067e Generic\u060c \u0628\u0631\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u060c \u062a\u0627\u06cc\u067e \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0646\u0627\u0645 Struct \u06cc\u0639\u0646\u06cc Deck\u060c Statement\u0627\u06cc \u062f\u0631\u0648\u0646 \u0628\u0631\u0627\u06a9\u062a \u0645\u0631\u0628\u0639\u06cc (<code>[]<\/code>) \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647\u0627\u06cc\u062f. \u0627\u06cc\u0646 \u0628\u0631\u0627\u06a9\u062a\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 \u062a\u0639\u0631\u06cc\u0641 \u06cc\u06a9 \u06cc\u0627 \u0686\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0628\u0631\u0627\u06cc Struct \u0631\u0627 \u0645\u06cc\u062f\u0647\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u0627\u06cc\u067e Deck\u060c \u0641\u0642\u0637 \u06cc\u06a9 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0628\u0647 \u0646\u0627\u0645 C \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u06cc\u062f \u062a\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0627\u0631\u062a\u0647\u0627\u06cc \u062f\u0633\u062a \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u062f. \u0628\u0627 \u062a\u0639\u0631\u06cc\u0641 <code>C any<\/code>\u060c \u06a9\u062f\u062a\u0627\u0646 \u0645\u06cc\u06af\u0648\u06cc\u062f: \u00ab\u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0628\u0647 \u0646\u0627\u0645 C \u0628\u0633\u0627\u0632 \u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u0645 \u062f\u0631 Struct\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645\u060c \u0648 \u0627\u062c\u0627\u0632\u0647 \u0628\u062f\u0647 \u0647\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0628\u0627\u0634\u062f\u00bb. \u062f\u0631 \u067e\u0634\u062a \u0635\u062d\u0646\u0647\u060c \u062a\u0627\u06cc\u067e any \u062f\u0631 \u0648\u0627\u0642\u0639 Alias \u062a\u0627\u06cc\u067e interface{} \u0627\u0633\u062a. \u062f\u0633\u062a \u0634\u0645\u0627 \u0641\u0642\u0637 \u0628\u0647 \u06cc\u06a9 \u062a\u0627\u06cc\u067e Generic \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u061b \u0627\u0645\u0627 \u0627\u06af\u0631 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Generic \u0627\u0636\u0627\u0641\u06cc \u0644\u0627\u0632\u0645 \u062f\u0627\u0634\u062a\u06cc\u062f\u060c \u0645\u06cc\u062a\u0648\u0627\u0646\u0633\u062a\u06cc\u062f \u0628\u0627 \u0633\u06cc\u0646\u062a\u06a9\u0633 \u0648\u06cc\u0631\u06af\u0648\u0644\u062c\u062f\u0627\u06a9\u0646\u0646\u062f\u0647 \u0627\u0636\u0627\u0641\u0647\u0634\u0627\u0646 \u06a9\u0646\u06cc\u062f: <code>C any, F any<\/code>. \u0646\u0627\u0645 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u0686\u06cc\u0632\u06cc \u0628\u0627\u0634\u062f \u06a9\u0647 \u0631\u0632\u0631\u0648 \u0646\u0634\u062f\u0647\u2014\u0627\u0645\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u06a9\u0648\u062a\u0627\u0647 \u0648 \u0628\u0627 \u062d\u0631\u0641 \u0628\u0632\u0631\u06af.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u062a\u0627\u06cc\u067e Slice \u06cc\u0639\u0646\u06cc cards \u0631\u0627 \u062f\u0631 Struct \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e C \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0631\u062f\u0647\u0627\u06cc\u062f. \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Generic\u0647\u0627\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0631\u0627 \u0647\u0631\u062c\u0627 \u06a9\u0647 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062a\u0627\u06cc\u067e \u0645\u0634\u062e\u0635\u06cc \u0645\u06cc\u06af\u0630\u0627\u0634\u062a\u06cc\u062f \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0645\u062a\u062f\u0647\u0627 \u0628\u0631\u0627\u06cc Generic<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062a\u062f AddCard \u0631\u0627 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func (d *Deck&#91;C]) AddCard(card C) {\n    d.cards = append(d.cards, card)\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc AddCard\u060c \u0627\u0648\u0644 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e Generic \u06cc\u0639\u0646\u06cc <code>[C]<\/code> \u0628\u0647 Receiver \u0645\u062a\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u062f. \u0627\u06cc\u0646 \u0628\u0647 Go \u0645\u06cc\u06af\u0648\u06cc\u062f \u0646\u0627\u0645 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u062c\u0627\u06cc \u062f\u06cc\u06af\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u062a\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f\u2014and \u0627\u0632 \u0633\u06cc\u0646\u062a\u06a9\u0633 \u0628\u0631\u0627\u06a9\u062a \u0645\u0631\u0628\u0639\u06cc \u0645\u0634\u0627\u0628\u0647 \u062a\u0639\u0631\u06cc\u0641 Struct \u067e\u06cc\u0631\u0648\u06cc \u0645\u06cc\u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0631\u062f\u0646 Constraint \u06cc\u0639\u0646\u06cc any \u0646\u06cc\u0633\u062a\u2014\u0686\u0648\u0646 \u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 Deck \u0627\u0632 \u0642\u0628\u0644 \u0641\u0631\u0627\u0647\u0645 \u0634\u062f\u0647. \u0633\u067e\u0633\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u0628\u0639\u06cc \u06cc\u0639\u0646\u06cc card \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Placeholder \u06cc\u0639\u0646\u06cc C\u2014to\u200c\u062c\u0627\u06cc interface{}\u2014\u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0631\u062f\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062a\u062f RandomCard \u0631\u0627 \u0647\u0645 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func (d *Deck&#91;C]) RandomCard() C {\n    cardIdx := rand.Intn(len(d.cards))\n    return d.cards&#91;cardIdx]\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0628\u0627\u0631\u2014to\u200c\u062c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 C \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u0628\u0639\u2014\u0645\u062a\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 C \u0628\u0647\u200c\u062c\u0627\u06cc interface{} \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0631\u062f\u06cc\u062f. \u0686\u0648\u0646 cards \u06cc\u0639\u0646\u06cc []C \u0627\u0633\u062a\u060c \u062a\u0627\u06cc\u067e \u0628\u0627\u0632\u06af\u0634\u062a\u06cc C \u0627\u0633\u062a\u061b \u067e\u0633 Caller\u0647\u0627 \u062a\u0627\u06cc\u067e \u0639\u06cc\u0646\u06cc\u2014\u0628\u062f\u0648\u0646 Type Assertion\u2014\u0645\u06cc\u06af\u06cc\u0631\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc Constructor<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 NewPlayingCardDeck \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc *PlayingCard \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0627\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func NewPlayingCardDeck() *Deck&#91;*PlayingCard] {\n    suits := &#91;]string{\"Diamonds\", \"Hearts\", \"Clubs\", \"Spades\"}\n    ranks := &#91;]string{\"A\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"J\", \"Q\", \"K\"}\n\n    deck := &amp;Deck&#91;*PlayingCard]{}\n    for _, suit := range suits {\n        for _, rank := range ranks {\n            deck.AddCard(NewPlayingCard(suit, rank))\n        }\n    }\n    return deck\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u06cc\u0634\u062a\u0631 \u06a9\u062f NewPlayingCardDeck \u0647\u0645\u0627\u0646 \u0645\u06cc\u0645\u0627\u0646\u062f\u061b \u0627\u0645\u0627 \u062d\u0627\u0644\u0627 \u06a9\u0647 \u0627\u0632 \u0646\u0633\u062e\u0647 Generic \u06cc\u0639\u0646\u06cc Deck \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0631\u0627\u06cc C \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 \u062a\u0627\u06cc\u067e Deck\u2014\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u06cc\u06a9\u0646\u06cc\u062f\u060c \u0686\u0647 Deck \u0648 \u0686\u0647 Reference\u0627\u06cc \u0645\u062b\u0644 *Deck\u2014\u0648 \u0633\u067e\u0633 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0631\u062f\u0646 \u062a\u0627\u06cc\u067e\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f C \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u062f \u0628\u0627 \u0647\u0645\u0627\u0646 \u0628\u0631\u0627\u06a9\u062a \u0645\u0631\u0628\u0639\u06cc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e \u0628\u0627\u0632\u06af\u0634\u062a\u06cc NewPlayingCardDeck\u060c \u0647\u0645\u0686\u0646\u0627\u0646 \u0627\u0632 *Deck \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f\u061b \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0631\u0627\u06a9\u062a \u0645\u0631\u0628\u0639\u06cc \u0648 *PlayingCard \u0631\u0627 \u0647\u0645 \u0634\u0627\u0645\u0644 \u0645\u06cc\u0634\u0648\u06cc\u062f. \u0628\u0627 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0631\u062f\u0646 [*PlayingCard]\u060c \u0645\u06cc\u06af\u0648\u06cc\u06cc\u062f \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u062a\u0627\u06cc\u067e *PlayingCard \u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0648 \u0645\u062a\u062f\u0647\u0627\u06cc Deck\u060c \u0645\u0642\u062f\u0627\u0631 C \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u062f. \u06cc\u0639\u0646\u06cc \u062a\u0627\u06cc\u067e \u0641\u06cc\u0644\u062f cards \u0631\u0648\u06cc Deck \u0639\u0645\u0644\u0627\u064b \u0627\u0632 []C \u0628\u0647 []*PlayingCard \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u06cc\u0646\u0637\u0648\u0631 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a Instance \u062c\u062f\u06cc\u062f Deck: \u0628\u0647\u200c\u062c\u0627\u06cc <code>&amp;Deck{}<\/code>\u060c <code>&amp;Deck[*PlayingCard]{}<\/code> \u0645\u06cc\u0646\u0648\u06cc\u0633\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0627\u0628\u0639 main \u0628\u062f\u0648\u0646 Type Assertion<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u062a\u0627\u0628\u0639 main \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0647\u0631\u0647\u06af\u06cc\u0631\u06cc \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func main() {\n    deck := NewPlayingCardDeck()\n\n    fmt.Printf(\"--- drawing playing card ---\\n\")\n    playingCard := deck.RandomCard()\n    fmt.Printf(\"drew card: %s\\n\", playingCard)\n    fmt.Printf(\"card suit: %s\\n\", playingCard.Suit)\n    fmt.Printf(\"card rank: %s\\n\", playingCard.Rank)\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0634\u0645\u0627 \u062d\u0630\u0641 \u06a9\u062f \u0627\u0633\u062a\u2014\u0686\u0648\u0646 \u062f\u06cc\u06af\u0631 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0645\u0642\u062f\u0627\u0631 interface{} \u0631\u0627 \u0628\u0647 *PlayingCard \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u062f. \u0648\u0642\u062a\u06cc RandomCard \u06cc\u0639\u0646\u06cc *PlayingCard \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0627\u0646\u062f\u060c \u06cc\u0639\u0646\u06cc \u062a\u0627\u06cc\u067e playingCard \u0647\u0645 *PlayingCard \u0627\u0633\u062a \u0648 \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc Suit \u06cc\u0627 Rank \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>go run main.go<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0642\u0628\u0644 \u0627\u0633\u062a\u061b \u0627\u0645\u0627 \u062f\u06cc\u06af\u0631 Type Assertion \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0648 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0635\u0644\u0627\u064b \u0627\u062c\u0627\u0632\u0647 \u0627\u0641\u0632\u0648\u062f\u0646 TradingCard \u0628\u0647 \u062f\u0633\u062a *PlayingCard \u0631\u0627 \u0646\u0645\u06cc\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--- drawing playing card ---\ndrew card: 8 of Hearts\ncard suit: Hearts\ncard rank: 8<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u062f\u0633\u062a \u0631\u0648\u06cc \u062a\u0627\u06cc\u067e \u06a9\u0627\u0631\u062a Generic \u0627\u0633\u062a\u060c \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0645\u0627\u0646 \u062a\u0639\u0631\u06cc\u0641 Deck \u0631\u0627\u2014\u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u062f\u0634\u2014\u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u06a9\u0627\u0631\u062a \u062f\u06cc\u06af\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Generic\u0647\u0627 \u0628\u0627 \u0686\u0646\u062f\u06cc\u0646 \u062a\u0627\u06cc\u067e<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0627\u0646 <code>Deck[C]<\/code> \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u062f\u0631 Deck\u2014to\u200c\u0639\u0646\u0648\u0627\u0646 <code>*Deck[*TradingCard]<\/code> \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u062f\u061b \u0641\u0642\u0637 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u062f\u0633\u062a \u062c\u0627\u0628\u0647\u062c\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u062a\u0627\u06cc\u067e TradingCard\u060c main.go \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u062a\u0639\u0631\u06cc\u0641 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type TradingCard struct {\n    CollectableName string\n}\n\nfunc NewTradingCard(collectableName string) *TradingCard {\n    return &amp;TradingCard{CollectableName: collectableName}\n}\n\nfunc (tc *TradingCard) String() string {\n    return tc.CollectableName\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 TradingCard \u0634\u0628\u06cc\u0647 PlayingCard \u0627\u0633\u062a\u061b \u0627\u0645\u0627 \u0628\u0647\u200c\u062c\u0627\u06cc \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc Suit \u0648 Rank\u060c \u0641\u06cc\u0644\u062f CollectableName \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633\u060c Constructor \u06cc\u0639\u0646\u06cc NewTradingCardDeck \u0631\u0627 \u0628\u0631\u0627\u06cc Deck \u067e\u0631\u0634\u062f\u0647 \u0628\u0627 *TradingCard \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func NewTradingCardDeck() *Deck&#91;*TradingCard] {\n    collectables := &#91;]string{\"Sammy\", \"Droplets\", \"Spaces\", \"App Platform\"}\n    deck := &amp;Deck&#91;*TradingCard]{}\n    for _, collectable := range collectables {\n        deck.AddCard(NewTradingCard(collectable))\n    }\n    return deck\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u06cc\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 *Deck \u0627\u06cc\u0646 \u0628\u0627\u0631\u060c *PlayingCard \u0631\u0627 \u0628\u0627 *TradingCard \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0647\u0627\u06cc\u062f\u2014but \u0627\u06cc\u0646 \u062a\u0646\u0647\u0627 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u062f\u0647\u06cc\u062f. \u0645\u062a\u062f AddCard \u0647\u0645\u0686\u0646\u0627\u0646 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u062f\u061b \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0645\u0642\u062f\u0627\u0631 *TradingCard \u0631\u0627 \u0645\u06cc\u067e\u0630\u06cc\u0631\u062f. \u0627\u06af\u0631 \u0645\u0642\u062f\u0627\u0631\u06cc \u0627\u0632 NewPlayingCard \u0631\u0627 \u067e\u0627\u0633 \u0645\u06cc\u062f\u0627\u062f\u06cc\u062f\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062e\u0637\u0627 \u0645\u06cc\u062f\u0627\u062f\u2014\u0686\u0648\u0646 \u0627\u0646\u062a\u0638\u0627\u0631 *TradingCard \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c main \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u062f\u0633\u062a \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 *TradingCard\u0647\u0627 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func main() {\n    playingDeck := NewPlayingCardDeck()\n    tradingDeck := NewTradingCardDeck()\n\n    fmt.Printf(\"--- drawing playing card ---\\n\")\n    playingCard := playingDeck.RandomCard()\n    fmt.Printf(\"drew card: %s\\n\", playingCard)\n    fmt.Printf(\"card suit: %s\\n\", playingCard.Suit)\n    fmt.Printf(\"card rank: %s\\n\", playingCard.Rank)\n\n    fmt.Printf(\"--- drawing trading card ---\\n\")\n    tradingCard := tradingDeck.RandomCard()\n    fmt.Printf(\"drew card: %s\\n\", tradingCard)\n    fmt.Printf(\"card collectable name: %s\\n\", tradingCard.CollectableName)\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 Deck \u06cc\u0639\u0646\u06cc Generic \u0627\u0633\u062a\u060c RandomCard \u0648\u0642\u062a\u06cc \u0631\u0648\u06cc tradingDeck \u0635\u062f\u0627 \u0632\u062f\u0647 \u0645\u06cc\u0634\u0648\u062f \u06cc\u0639\u0646\u06cc *TradingCard \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0627\u0646\u062f\u061b \u067e\u0633 \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u2014\u0628\u062f\u0648\u0646 Type Assertion\u2014\u0628\u0647 CollectableName \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>go run main.go<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>--- drawing playing card ---\ndrew card: Q of Diamonds\ncard suit: Diamonds\ncard rank: Q\n--- drawing trading card ---\ndrew card: App Platform\ncard collectable name: App Platform<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0646\u0647\u0627 \u062a\u063a\u06cc\u06cc\u0631 Deck\u060c \u0627\u0641\u0632\u0648\u062f\u0646 Constructor \u062c\u062f\u06cc\u062f \u0628\u0648\u062f\u061b \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0628\u0642\u06cc\u0647 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f. <strong>\u0627\u0645\u0627 Deck \u0641\u0639\u0644\u06cc \u0647\u0645\u0686\u0646\u0627\u0646 \u0627\u0632 <code>C any<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u062f\u061b \u067e\u0633 \u0647\u06cc\u0686 \u0686\u06cc\u0632\u06cc \u062c\u0644\u0648\u06cc Caller\u0650 \u0633\u0627\u062e\u062a <code>&amp;Deck[int]{}<\/code> \u0631\u0627 \u0646\u0645\u06cc\u06af\u06cc\u0631\u062f.<\/strong> \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062f\u0633\u062a \u0641\u0642\u0637 \u0628\u0647 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u06a9\u0627\u0631\u062a\u060c \u0628\u0647 Constraint \u062a\u0627\u06cc\u067e\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Generic<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Constraint\u0647\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u06a9\u0646\u0646\u062f \u06a9\u062f\u0627\u0645 \u062a\u0627\u06cc\u067e\u0647\u0627 \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e\u06cc \u0628\u0627\u0634\u0646\u062f\u2014\u062a\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0631\u0627 \u06a9\u0647 \u0641\u0642\u0637 \u0622\u0646 \u062a\u0627\u06cc\u067e\u0647\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u06a9\u0646\u0646\u062f \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u062f. \u0648\u0642\u062a\u06cc \u06a9\u062f Generic \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0645\u062a\u062f\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0635\u062f\u0627 \u0628\u0632\u0646\u062f \u06cc\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f \u06a9\u0647 \u0647\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0646\u062f\u0627\u0631\u062f\u060c \u0628\u0647 Constraint \u062a\u0646\u06af\u062a\u0631\u06cc \u0627\u0632 any \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">main.go \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Card \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type Card interface {\n    fmt.Stringer\n    Name() string\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Card \u0645\u062b\u0644 \u0647\u0631 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Go \u062f\u06cc\u06af\u0631\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647\u2014\u0647\u06cc\u0686 \u0627\u0644\u0632\u0627\u0645 \u062e\u0627\u0635\u06cc \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0627 Generic\u0647\u0627 \u0646\u062f\u0627\u0631\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0686\u06cc\u0632\u06cc Card \u062d\u0633\u0627\u0628 \u0634\u0648\u062f\u060c \u0628\u0627\u06cc\u062f fmt.Stringer \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0646\u062f (\u0645\u062a\u062f String \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f) \u0648 \u0645\u062a\u062f Name \u0631\u0627 \u0647\u0645 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u06a9\u0647 string \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633\u060c \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc TradingCard \u0648 PlayingCard \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u0645\u062a\u062f Name \u062c\u062f\u06cc\u062f \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func (tc *TradingCard) Name() string {\n    return tc.String()\n}\n\nfunc (pc *PlayingCard) Name() string {\n    return pc.String()\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">TradingCard \u0648 PlayingCard \u0627\u0632 \u0642\u0628\u0644 String \u062f\u0627\u0631\u0646\u062f \u06a9\u0647 fmt.Stringer \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u062f. \u067e\u0633 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 Card\u060c \u0641\u0642\u0637 \u0645\u062a\u062f Name \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f. \u0686\u0648\u0646 fmt.Stringer \u0627\u0632 \u0642\u0628\u0644 \u0646\u0627\u0645 \u06a9\u0627\u0631\u062a\u0647\u0627 \u0631\u0627 \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0627\u0646\u062f\u060c \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u062a\u06cc\u062c\u0647 String \u0631\u0627 \u0628\u0631\u0627\u06cc Name \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627\u060c Deck \u0631\u0627 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0641\u0642\u0637 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Card \u0628\u0631\u0627\u06cc C \u0645\u062c\u0627\u0632 \u0628\u0627\u0634\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type Deck&#91;C Card] struct {\n    cards &#91;]C\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u060c <code>C any<\/code> \u0631\u0627 \u062f\u0627\u0634\u062a\u06cc\u062f\u2014which \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0632\u06cc\u0627\u062f\u06cc \u0646\u0628\u0648\u062f. \u062d\u0627\u0644\u0627 \u06a9\u0647 any \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Card \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0647\u0627\u06cc\u062f\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 Go \u0647\u0646\u06af\u0627\u0645 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u06a9\u0646\u062f \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u0634\u062f\u0647 \u0628\u0631\u0627\u06cc C\u060c Card \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0627\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647\u0627\u06cc\u062f\u060c \u062d\u0627\u0644\u0627 \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0647\u0631 \u0645\u062a\u062f\u06cc \u06a9\u0647 Card \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u062f \u062f\u0631\u0648\u0646 \u0645\u062a\u062f\u0647\u0627\u06cc Deck \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u0645\u06cc\u062e\u0648\u0627\u0633\u062a\u06cc\u062f RandomCard \u0646\u0627\u0645 \u06a9\u0627\u0631\u062a\u0650 \u062f\u0631 \u062d\u0627\u0644 \u06a9\u0634\u06cc\u062f\u0647 \u0634\u062f\u0646 \u0631\u0627 \u0647\u0645 \u0686\u0627\u067e \u06a9\u0646\u062f\u060c \u0628\u0647 \u0645\u062a\u062f Name \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u062f\u2014\u0686\u0648\u0646 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Card \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>go run main.go<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>--- drawing playing card ---\ndrew card: 5 of Clubs\ncard suit: Clubs\ncard rank: 5\n--- drawing trading card ---\ndrew card: Droplets\ncard collectable name: Droplets<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0646\u06a9\u0631\u062f\u0647. Constraint \u0641\u0642\u0637 \u0645\u0634\u062e\u0635 \u0645\u06cc\u06a9\u0646\u062f \u06a9\u062f\u0627\u0645 \u062a\u0627\u06cc\u067e\u0647\u0627 \u0628\u0631\u0627\u06cc C \u0645\u062c\u0627\u0632\u0646\u062f\u061b \u0631\u0641\u062a\u0627\u0631\u0650 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 Card \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u0646\u062f \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u0645\u06cc\u062f\u0647\u062f. \u0628\u0627 <code>Deck[C Card]<\/code>\u060c \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 Name() \u0648 \u0645\u062a\u062f\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 Card \u0631\u0627 \u0631\u0648\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u0627\u0632 \u062a\u0627\u06cc\u067e C \u062f\u0631\u0648\u0646 \u0645\u062a\u062f\u0647\u0627\u06cc Deck \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u062f\u0631\u06a9 Constraint\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0648 \u0645\u062c\u0645\u0648\u0639\u0647\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Constraint\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc\u060c \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0645\u0634\u062e\u0635 \u0645\u06cc\u06a9\u0646\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0686\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0634\u062f\u061b \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f <strong>\u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u062a\u062f<\/strong> (\u0645\u062b\u0644 Card) \u06cc\u0627 <strong>\u0645\u062c\u0645\u0648\u0639\u0647 \u062a\u0627\u06cc\u067e<\/strong> (\u0634\u0627\u0645\u0644 Union Constraint\u0647\u0627 \u0648 Built-in\u0647\u0627 \u0645\u062b\u0644 comparable) \u0628\u0627\u0634\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u06a9\u062f \u0645\u0639\u0645\u0648\u0644\u06cc Go\u060c \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0627 \u062a\u0648\u0635\u06cc\u0641 \u0645\u06cc\u06a9\u0646\u062f: \u0645\u062c\u0645\u0648\u0639\u0647\u0627\u06cc \u0627\u0632 \u0645\u062a\u062f\u0647\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u06a9\u0646\u062f \u0648 \u0647\u0631 \u062a\u0627\u06cc\u067e\u06cc \u06a9\u0647 \u0622\u0646 \u0645\u062a\u062f\u0647\u0627 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0646\u062f\u060c \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0631\u0627 \u0627\u0631\u0636\u0627 \u0645\u06cc\u06a9\u0646\u062f. \u0648\u0642\u062a\u06cc \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Constraint \u062a\u0627\u06cc\u067e\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u0634\u0648\u062f\u060c \u0647\u0645\u0686\u0646\u0627\u0646 \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u062a\u062f \u0628\u0627\u0634\u062f\u061b \u0627\u0645\u0627 \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0645\u062c\u0645\u0648\u0639\u0647 \u062a\u0627\u06cc\u067e \u0647\u0645 \u0628\u0627\u0634\u062f: \u0641\u0647\u0631\u0633\u062a\u06cc \u0627\u0632 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0645\u062c\u0627\u0632.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646-Constraint \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646-\u0645\u0642\u062f\u0627\u0631:<\/strong> \u0648\u0642\u062a\u06cc <code>func F[T io.Reader](r T)<\/code> \u0645\u06cc\u0646\u0648\u06cc\u0633\u06cc\u062f\u060c T \u0641\u0642\u0637 \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0628\u0627 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc\u06cc Instantiate \u0634\u0648\u062f \u06a9\u0647 io.Reader \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u0646\u062f\u061b \u062f\u0631\u0648\u0646 F \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f <code>r.Read()<\/code> \u0631\u0627 \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f. \u0648\u0642\u062a\u06cc <code>func G[T any](x T)<\/code> \u0645\u06cc\u0646\u0648\u06cc\u0633\u06cc\u062f\u060c \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u06cc\u0686 \u0645\u062a\u062f\u06cc \u0631\u0648\u06cc x \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f\u2014\u0686\u0648\u0646 any \u0647\u06cc\u0686 \u0627\u0644\u0632\u0627\u0645\u06cc \u0631\u0648\u06cc T \u0646\u0645\u06cc\u06af\u0630\u0627\u0631\u062f. \u067e\u0633 <strong>Constraint \u0645\u0634\u062e\u0635 \u0645\u06cc\u06a9\u0646\u062f \u0686\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0631\u0648\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0645\u062c\u0627\u0632 \u0627\u0633\u062a.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Union Type Constraint\u0647\u0627 \u0648 ~T:<\/strong> \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u0628\u0647 \u0645\u062c\u0645\u0648\u0639\u0647\u0627\u06cc \u0627\u0632 \u062a\u0627\u06cc\u067e\u0647\u0627 \u0628\u0627 Union \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f\u2014\u0645\u062b\u0644\u0627\u064b <code>int | string<\/code> \u06cc\u0627 <code>~int | ~int64<\/code>. \u0639\u0644\u0627\u0645\u062a ~ (Tilde) \u06cc\u0639\u0646\u06cc \u00ab\u062a\u0627\u06cc\u067e \u0632\u06cc\u0631\u0628\u0646\u0627\u06cc\u06cc\u00bb: ~int \u06cc\u0639\u0646\u06cc int \u0648 \u0647\u0631 \u062a\u0627\u06cc\u067e\u06cc \u06a9\u0647 \u062a\u0627\u06cc\u067e \u0632\u06cc\u0631\u0628\u0646\u0627\u06cc\u06cc\u0627\u0634 int \u0627\u0633\u062a (\u0645\u062b\u0644\u0627\u064b <code>type MyInt int<\/code>). \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc Generic\u0647\u0627\u06cc \u0639\u062f\u062f\u06cc \u06cc\u0627 \u0631\u0634\u062a\u0647\u0645\u0627\u0646\u0646\u062f\u2014\u0628\u062f\u0648\u0646 \u067e\u0630\u06cc\u0631\u0634 \u0647\u0631 \u062a\u0627\u06cc\u067e\u06cc\u2014\u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Constraint \u06cc\u0639\u0646\u06cc comparable:<\/strong> \u0632\u0628\u0627\u0646\u060c Constraint \u0627\u0632-\u067e\u06cc\u0634-\u0627\u0639\u0644\u0627\u0645\u0634\u062f\u0647 \u06cc\u0639\u0646\u06cc comparable \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc\u06cc \u06a9\u0647 <code>==<\/code> \u0648 <code>!=<\/code> \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u06a9\u0646\u0646\u062f \u062f\u0627\u0631\u062f. \u0648\u0642\u062a\u06cc \u062a\u0627\u0628\u0639 Generic \u0628\u0627\u06cc\u062f \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 \u0627\u0632 \u062a\u0627\u06cc\u067e T \u0631\u0627 \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u062f (\u0645\u062b\u0644\u0627\u064b \u062f\u0631 map key \u06cc\u0627 set) \u0644\u0627\u0632\u0645\u0634 \u062f\u0627\u0631\u06cc\u062f. \u0627\u06af\u0631 T any \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u0648 \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 T \u0631\u0627 \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0631\u062f \u0645\u06cc\u06a9\u0646\u062f\u061b \u0628\u0647\u200c\u062c\u0627\u06cc\u0634 T comparable \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u067e\u06a9\u06cc\u062c constraints:<\/strong> \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u060c \u067e\u06a9\u06cc\u062c constraints \u0639\u0631\u0636\u0647 \u0646\u0645\u06cc\u06a9\u0646\u062f. Constraint\u0647\u0627\u06cc \u0645\u0631\u062a\u0628 \u0648 \u0639\u062f\u062f\u06cc \u0631\u0627\u06cc\u062c \u062f\u0631 <code>golang.org\/x\/exp\/constraints<\/code> \u0632\u0646\u062f\u06af\u06cc \u0645\u06cc\u06a9\u0646\u0646\u062f\u2014which \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 constraints.Ordered (\u062a\u0627\u06cc\u067e\u0647\u0627\u06cc\u06cc \u06a9\u0647 &lt;\u060c &lt;=\u060c &gt;\u060c &gt;= \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u06a9\u0646\u0646\u062f) \u0648 constraints.Integer \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0627\u0644 \u0632\u06cc\u0631 \u062a\u0627\u0628\u0639 Generic \u06cc\u0639\u0646\u06cc Min \u0631\u0627 \u0628\u0627 constraints.Ordered \u0646\u0634\u0627\u0646 \u0645\u06cc\u062f\u0647\u062f. \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0631\u0627 \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647\u200c\u0627\u06cc \u0628\u06cc\u0631\u0648\u0646 \u067e\u0631\u0648\u0698\u0647 tutorial \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0633\u067e\u0633 \u0645\u0627\u0698\u0648\u0644 \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0631\u0627 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>go mod init example\/min\ngo get golang.org\/x\/exp\/constraints<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 main.go \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u0645\u062d\u062a\u0648\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package main\n\nimport (\n    \"fmt\"\n    \"golang.org\/x\/exp\/constraints\"\n)\n\nfunc Min&#91;T constraints.Ordered](a, b T) T {\n    if a &lt; b {\n        return a\n    }\n    return b\n}\n\nfunc main() {\n    fmt.Println(Min(3, 5))       \/\/ 3\n    fmt.Println(Min(\"apple\", \"banana\")) \/\/ \"apple\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>3\napple<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 Min \u0628\u0627 \u0647\u0631 \u062a\u0627\u06cc\u067e\u06cc \u06a9\u0647 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0628\u0627 <code>&lt;<\/code> \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u06a9\u0646\u062f \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u062f. Constraint \u06cc\u0639\u0646\u06cc constraints.Ordered \u0634\u0627\u0645\u0644 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0639\u062f\u062f\u06cc \u0648 \u0631\u0634\u062a\u0647\u0627\u06cc Built-in \u0627\u0633\u062a\u061b \u067e\u0633 \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f Min \u0631\u0627 \u0628\u0627 Integer \u06cc\u0627 String \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f\u2014\u0628\u062f\u0648\u0646 \u0646\u0648\u0634\u062a\u0646 \u062a\u0648\u0627\u0628\u0639 \u062c\u062f\u0627\u06af\u0627\u0646\u0647.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647:<\/strong> \u0645\u062c\u0645\u0648\u0639\u0647\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0648 \u0633\u06cc\u0646\u062a\u06a9\u0633 Union \u0628\u062e\u0634\u06cc \u0627\u0632 \u0632\u0628\u0627\u0646 Go 1.18 \u0647\u0633\u062a\u0646\u062f. \u067e\u06a9\u06cc\u062c constraints \u062f\u0631 golang.org\/x\/exp \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u0633\u062a \u0648 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u062f\u061b \u0628\u0631\u0627\u06cc \u06a9\u062f \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u0647\u0627\u06cc Constraint \u06a9\u0648\u0686\u06a9 \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f (\u0645\u062b\u0644\u0627\u064b <code>type Ordered interface { ~int | ~int64 | ~float64 }<\/code>).<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u062a\u0648\u0627\u0628\u0639 Generic<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0648\u0627\u0628\u0639 Generic \u0627\u0632 \u0647\u0645\u0627\u0646 \u0633\u06cc\u0646\u062a\u06a9\u0633 \u067e\u0627\u0631\u0627\u0645\u062a\u0631-\u062a\u0627\u06cc\u067e\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Generic \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u0646\u062f: \u0641\u0647\u0631\u0633\u062a \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u062f\u0631 \u0628\u0631\u0627\u06a9\u062a \u0645\u0631\u0628\u0639\u06cc \u0642\u0628\u0644 \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u0639\u0645\u0648\u0644\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. Constraint \u0631\u0648\u06cc \u0622\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0645\u0634\u062e\u0635 \u0645\u06cc\u06a9\u0646\u062f \u06a9\u062f\u0627\u0645 \u0645\u062a\u062f\u0647\u0627 \u0631\u0627 \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0631\u0648\u06cc \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0627\u0628\u0639 printCard<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">main.go \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u06cc\u0646 \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u0647\u0627 \u0631\u0627 \u0628\u062f\u0647\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func printCard&#91;C any](card C) {\n    fmt.Println(\"card name:\", card.Name())\n}\n\nfunc main() {\n    \/\/ ... \u06a9\u062f \u0642\u0628\u0644\u06cc ...\n\n    fmt.Printf(\"--- printing cards ---\\n\")\n    printCard&#91;*PlayingCard](playingCard)\n    printCard(tradingCard)\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062a\u0627\u0628\u0639 printCard\u060c \u0633\u06cc\u0646\u062a\u06a9\u0633 \u0628\u0631\u0627\u06a9\u062a \u0645\u0631\u0628\u0639\u06cc \u0622\u0634\u0646\u0627 \u0628\u0631\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e Generic\u2014to\u200c\u062f\u0646\u0628\u0627\u0644\u0634 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u0639\u0645\u0648\u0644\u06cc \u062a\u0627\u0628\u0639 \u062f\u0631 \u067e\u0631\u0627\u0646\u062a\u0632\u2014\u0631\u0627 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u062f. \u062f\u0631 main\u060c \u0627\u0632 printCard \u0628\u0631\u0627\u06cc \u0686\u0627\u067e \u0647\u0631 \u062f\u0648 *PlayingCard \u0648 *TradingCard \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u062a\u0648\u062c\u0647 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u0647\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc <code>[*PlayingCard]<\/code> \u0631\u0627 \u0634\u0627\u0645\u0644 \u0645\u06cc\u0634\u0648\u062f\u061b \u0627\u0645\u0627 \u062f\u0648\u0645\u06cc \u0647\u0645\u0627\u0646 <code>[*TradingCard]<\/code> \u0631\u0627 \u0634\u0627\u0645\u0644 \u0646\u0645\u06cc\u0634\u0648\u062f. \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 Go \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u0631\u0627 \u0627\u0632 \u0645\u0642\u062f\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u0628\u0639 \u067e\u0627\u0633 \u0645\u06cc\u062f\u0647\u06cc\u062f \u0628\u0641\u0647\u0645\u062f\u061b \u067e\u0633 \u062f\u0631 \u0645\u0648\u0627\u0631\u062f\u06cc \u0645\u062b\u0644 \u0627\u06cc\u0646\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc <strong>\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc<\/strong> \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>go run main.go<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0628\u0627\u0631 \u062e\u0637\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u06cc\u0628\u06cc\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># command-line-arguments\n.\/main.go:87:33: card.Name undefined (type C has no field or method Name)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u062a\u0627\u0628\u0639 printCard\u060c <code>any<\/code> \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Constraint \u062f\u0627\u0631\u06cc\u062f. \u0648\u0642\u062a\u06cc Go \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u06a9\u0646\u062f\u060c \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u062f \u0641\u0642\u0637 \u0645\u062a\u062f\u0647\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 any \u0631\u0627 \u0628\u0628\u06cc\u0646\u062f\u2014which \u0647\u06cc\u0686\u06cc \u0646\u06cc\u0633\u062a. <strong>\u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0645\u0632\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Constraint\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0645\u0634\u062e\u0635 \u0631\u0648\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0627\u0633\u062a.<\/strong> \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u062a\u062f Name \u0631\u0648\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u06a9\u0627\u0631\u062a\u062a\u0627\u0646\u060c \u0628\u0627\u06cc\u062f \u0628\u0647 Go \u0628\u06af\u0648\u06cc\u06cc\u062f \u062a\u0646\u0647\u0627 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u0634\u062f\u0647 \u0628\u0631\u0627\u06cc C\u060c Card \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0635\u0644\u0627\u062d Constraint<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">main.go \u0631\u0627 \u0628\u0631\u0627\u06cc \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc Constraint \u06cc\u0639\u0646\u06cc any \u0628\u0627 Constraint \u06cc\u0639\u0646\u06cc Card \u0628\u0647\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func printCard&#91;C Card](card C) {\n    fmt.Println(\"card name:\", card.Name())\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>go run main.go<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0646\u0627\u0645\u0647 \u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u062c\u0631\u0627 \u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--- drawing playing card ---\ndrew card: 6 of Hearts\ncard suit: Hearts\ncard rank: 6\n--- drawing trading card ---\ndrew card: App Platform\ncard collectable name: App Platform\n--- printing cards ---\ncard name: 6 of Hearts\ncard name: App Platform<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u062e\u0631\u0648\u062c\u06cc\u060c \u0647\u0631 \u062f\u0648 \u06a9\u0627\u0631\u062a \u06a9\u0634\u06cc\u062f\u0647 \u0648 \u0686\u0627\u067e \u0645\u06cc\u0634\u0648\u0646\u062f\u061b \u0627\u0645\u0627 \u062d\u0627\u0644\u0627 printCard \u0647\u0645 \u06a9\u0627\u0631\u062a\u0647\u0627 \u0631\u0627 \u0686\u0627\u067e \u06a9\u0631\u062f\u0647 \u0648 \u0627\u0632 \u0645\u062a\u062f Name \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u0646\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u062f. <strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>C Card<\/code> \u0628\u0647\u200c\u062c\u0627\u06cc <code>C any<\/code> \u0627\u0633\u062a \u06a9\u0647 \u0627\u062c\u0627\u0632\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f\u0646 <code>card.Name()<\/code> \u0631\u0627 \u0645\u06cc\u062f\u0647\u062f.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u062d\u0648\u0647 \u06a9\u0627\u0631 \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u062a\u0627\u06cc\u067e<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u0627\u0632 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0647\u0627\u06cc \u062a\u0627\u0628\u0639 \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u0645\u06cc\u06a9\u0646\u062f\u2014\u0648\u0642\u062a\u06cc \u0628\u062a\u0648\u0627\u0646\u062f\u061b \u0648\u0642\u062a\u06cc \u0622\u0631\u06af\u0645\u0627\u0646\u06cc \u0646\u06cc\u0633\u062a (\u06cc\u0627 \u062a\u0627\u06cc\u067e \u0645\u0628\u0647\u0645 \u0627\u0633\u062a)\u060c \u0628\u0627\u06cc\u062f \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u0635\u0631\u06cc\u062d \u067e\u0627\u0633 \u0628\u062f\u0647\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc <code>printCard(tradingCard)<\/code> \u0631\u0627 \u0635\u062f\u0627 \u0645\u06cc\u0632\u0646\u06cc\u062f\u060c \u0622\u0631\u06af\u0648\u0645\u0627\u0646 tradingCard \u062a\u0627\u06cc\u067e *TradingCard \u062f\u0627\u0631\u062f\u061b \u067e\u0633 Go \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc C \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 *TradingCard \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u0645\u06cc\u06a9\u0646\u062f \u0648 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a <code>printCard[*TradingCard](tradingCard)<\/code> \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f. \u0648\u0642\u062a\u06cc <code>printCard(playingCard)<\/code> \u0631\u0627 \u0635\u062f\u0627 \u0645\u06cc\u0632\u0646\u06cc\u062f\u060c \u0647\u0645\u06cc\u0646 applies: playingCard \u06cc\u0639\u0646\u06cc *PlayingCard\u061b \u067e\u0633 \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0631 \u062f\u0648 \u0634\u06a9\u0644 <code>printCard(playingCard)<\/code> \u06cc\u0627 <code>printCard[*PlayingCard](playingCard)<\/code> \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f. <strong>\u0647\u0631 \u062f\u0648 \u0645\u0639\u062a\u0628\u0631\u0646\u062f\u061b \u0641\u0631\u0645 \u0635\u0631\u06cc\u062d \u0648\u0642\u062a\u06cc \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0627\u06cc\u067e \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u0628\u0647\u0637\u0648\u0631 \u06cc\u06a9\u062a\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u062f.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0628\u0627\u06cc\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f: \u062a\u0627\u0628\u0639 Generic \u0628\u062f\u0648\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 (\u0645\u062b\u0644\u0627\u064b <code>func ReturnZero[T any]() T { var z T; return z }<\/code>) \u06cc\u0627 \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u0641\u0642\u0637 \u062a\u0627\u06cc\u067e Generic \u0631\u0627 \u0628\u0631\u0645\u06cc\u06af\u0631\u062f\u0627\u0646\u062f \u0648 \u0647\u06cc\u0686 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u06cc \u0627\u0632 \u062a\u0627\u06cc\u067e T \u0646\u062f\u0627\u0631\u062f. \u062f\u0631 \u0622\u0646 \u0645\u0648\u0627\u0631\u062f\u060c \u0645\u062d\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0628\u0627\u06cc\u062f \u062a\u0627\u06cc\u067e \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0646\u062f\u2014\u0645\u062b\u0644\u0627\u064b <code>ReturnZero[int]()<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0641\u0631\u0627\u0645\u0648\u0634 \u06a9\u0646\u06cc\u062f \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># command-line-arguments\n.\/main.go:NN:NN: cannot infer T<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0648\u0642\u062a\u06cc \u0631\u062e \u0645\u06cc\u062f\u0647\u062f \u06a9\u0647 \u062a\u0627\u0628\u0639 \u0647\u06cc\u0686 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0627\u0632 \u062a\u0627\u06cc\u067e T \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u0631\u0633\u06cc \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0631\u0641\u0639\u060c \u0647\u0645\u06cc\u0634\u0647 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0631\u062f\u0646 \u0635\u0631\u06cc\u062d \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e\u06cc \u0627\u0633\u062a: <code>ReturnZero[int]()<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u06a9\u0627\u0631\u0627\u06cc\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627\u06cc Go \u0627\u0632 \u0637\u0631\u06cc\u0642 <strong>GCShape Stenciling<\/strong> \u067e\u06cc\u0627\u062f\u0647 \u0634\u062f\u0647\u0627\u0646\u062f: \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u062c\u0645\u0648\u0639\u0647 \u06a9\u0648\u0686\u06a9\u06cc \u0627\u0632 \u0634\u06a9\u0644\u0647\u0627\u06cc \u0632\u06cc\u0631\u0628\u0646\u0627\u06cc\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u06a9\u0646\u062f (\u0645\u062b\u0644\u0627\u064b \u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Pointer \u0648 \u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0644\u0627\u0633 \u0627\u0646\u062f\u0627\u0632\u0647 \u062a\u0627\u06cc\u067e \u0645\u0642\u062f\u0627\u0631\u06cc)\u2014\u0628\u0647\u200c\u062c\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644\u0627\u064b \u062c\u062f\u0627\u06cc \u0647\u0631 \u062a\u0627\u06cc\u067e \u0645\u062b\u0644 Template\u0647\u0627\u06cc C++. \u062f\u0631 \u0639\u0645\u0644 \u06cc\u0639\u0646\u06cc Generic\u0647\u0627 \u0633\u0631\u0628\u0627\u0631 \u0642\u0627\u0628\u0644-\u0627\u0646\u062f\u0627\u0632\u0647\u06af\u06cc\u0631\u06cc\u0650 \u06a9\u0645 \u06cc\u0627 \u0647\u06cc\u0686\u06cc \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u06cc\u06a9\u0646\u0646\u062f \u0648\u0642\u062a\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Instantiate-\u0634\u062f\u0647 \u0647\u0645\u0627\u0646 \u0634\u06a9\u0644 \u0631\u0627 \u0634\u0631\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Pointer<\/strong> (\u0645\u062b\u0644\u0627\u064b *PlayingCard\u060c *TradingCard) \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u0633\u0627\u0632\u06cc \u0631\u0627 \u0634\u0631\u06cc\u06a9\u0646\u062f\u2014\u0686\u0648\u0646 \u0646\u0645\u0627\u06cc\u0634 \u06cc\u06a9\u0633\u0627\u0646\u06cc \u062f\u0627\u0631\u0646\u062f. <strong>\u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u06cc<\/strong> (\u0645\u062b\u0644\u0627\u064b int\u060c string\u060c struct{&#8230;}) \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u0648 Layout\u060c \u06a9\u067e\u06cc \u062e\u0648\u062f\u0634\u0627\u0646 \u0631\u0627 \u0628\u06af\u06cc\u0631\u0646\u062f. Implicit Boxing\u06cc \u0645\u062b\u0644 \u0628\u0631\u062e\u06cc \u0632\u0628\u0627\u0646\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f. \u0648\u0642\u062a\u06cc Generic\u0647\u0627 \u0647\u0632\u06cc\u0646\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u0646\u062f\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632 \u06a9\u067e\u06cc \u0627\u0636\u0627\u0641\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u06cc \u0628\u0632\u0631\u06af \u06cc\u0627 \u0627\u0632 Instantiate\u0647\u0627\u06cc \u0645\u062a\u0645\u0627\u06cc\u0632\u0650 \u0632\u06cc\u0627\u062f \u06a9\u0647 \u062d\u062c\u0645 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0631\u0627 \u0632\u06cc\u0627\u062f \u0645\u06cc\u06a9\u0646\u0646\u062f\u060c \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0648\u0635\u06cc\u0647:<\/strong> \u0627\u0648\u0644 \u06a9\u062f \u0634\u0641\u0627\u0641 \u0648 \u062f\u0631\u0633\u062a \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f. \u0627\u06af\u0631 \u0645\u0633\u06cc\u0631 \u062f\u0627\u063a\u06cc \u0627\u0632 Generic\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u062f\u060c \u0642\u0628\u0644 \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 \u0637\u0631\u0627\u062d\u06cc \u0628\u0627 <code>go test -bench<\/code> \u0627\u0646\u062f\u0627\u0632\u0647\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u062f. \u0645\u062b\u0627\u0644:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 First \u0631\u0627 \u0628\u0647 main.go \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func First&#91;T any](s &#91;]T) T { return s&#91;0] }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644\u06cc \u0628\u0647 \u0646\u0627\u0645 first_test.go \u062f\u0631 \u0647\u0645\u0627\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0627 \u0627\u06cc\u0646 Benchmark \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package main\n\nimport \"testing\"\n\nfunc BenchmarkFirstInt(b *testing.B) {\n    s := make(&#91;]int, 100)\n    for i := 0; i &lt; b.N; i++ {\n        _ = First(s)\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 Benchmark \u0631\u0627 \u0627\u0632 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>go test -bench=. -benchmem<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0628\u06cc\u0634\u062a\u0631 \u06a9\u062f\u0647\u0627\u060c \u0645\u0632\u06cc\u062a Generic\u0647\u0627\u06cc \u0627\u0645\u0646-\u0627\u0632-\u0646\u0638\u0631-\u062a\u0627\u06cc\u067e\u06cc \u0648 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f\u060c \u0628\u0631 \u0647\u0631 \u0647\u0632\u06cc\u0646\u0647 \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627\u06cc\u06cc \u0646\u0627\u0686\u06cc\u0632\u06cc \u063a\u0627\u0644\u0628 \u0627\u0633\u062a.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647:<\/strong> \u0627\u0632 \u0627\u062f\u0639\u0627\u0647\u0627\u06cc \u06a9\u0627\u0631\u0627\u06cc\u06cc \u06af\u0633\u062a\u0631\u062f\u0647 \u0628\u062f\u0648\u0646 \u0627\u0646\u062f\u0627\u0632\u0647\u06af\u06cc\u0631\u06cc \u067e\u0631\u0647\u06cc\u0632 \u06a9\u0646\u06cc\u062f. \u067e\u06cc\u0627\u062f\u0647\u0633\u0627\u0632\u06cc Generic\u0647\u0627\u06cc Go \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 Toolchain\u0647\u0627\u06cc \u0622\u06cc\u0646\u062f\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u062f.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0647\u0627\u062c\u0631\u062a \u06a9\u062f \u0642\u0628\u0644-\u0627\u0632-Generic \u0628\u0647 Generic<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0647\u0627\u062c\u0631\u062a \u0627\u0632 interface{} \u06cc\u0627 any \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc\u060c \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e\u06cc \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u062f\u0647\u062f \u0648 Type Assertion\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0645\u062d\u0644\u0647\u0627\u06cc \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062d\u0630\u0641 \u0645\u06cc\u06a9\u0646\u062f. \u0645\u062b\u0627\u0644 \u062f\u0633\u062a \u062f\u0631 \u0627\u06cc\u0646 tutorial \u0645\u0647\u0627\u062c\u0631\u062a \u0645\u0633\u062a\u0642\u06cc\u0645\u06cc \u0627\u0633\u062a: Deck \u0627\u0635\u0644\u06cc <code>[]interface{}<\/code> \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u06a9\u0631\u062f \u0648 Deck Generic \u06cc\u0639\u0646\u06cc <code>Deck[C Card]<\/code> \u06cc\u0639\u0646\u06cc []C \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u0639\u0646\u0635\u0631<\/th><th>\u0642\u0628\u0644 (\u0628\u062f\u0648\u0646 Generic)<\/th><th>\u0628\u0639\u062f (\u0628\u0627 Generic)<\/th><\/tr><\/thead><tbody><tr><td>Deck struct<\/td><td><code>cards []interface{}<\/code><\/td><td><code>cards []C<\/code> \u0628\u0627 <code>type Deck[C Card] struct<\/code><\/td><\/tr><tr><td>AddCard<\/td><td><code>func (d *Deck) AddCard(card interface{})<\/code><\/td><td><code>func (d *Deck[C]) AddCard(card C)<\/code><\/td><\/tr><tr><td>RandomCard<\/td><td><code>func (d *Deck) RandomCard() interface{}<\/code><\/td><td><code>func (d *Deck[C]) RandomCard() C<\/code><\/td><\/tr><tr><td>\u0645\u062d\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc<\/td><td><code>card := deck.RandomCard(); pc, ok := card.(*PlayingCard)<\/code><\/td><td><code>playingCard := deck.RandomCard()<\/code> (\u0628\u062f\u0648\u0646 Assertion)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0645\u0636\u0627\u0647\u0627\u060c <code>go build .\/...<\/code> \u0631\u0627 \u0627\u062c\u0631\u0627 \u0648 \u0647\u0631 \u0645\u062d\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u0627\u06cc \u06a9\u0647 \u0647\u0646\u0648\u0632 interface{} \u067e\u0627\u0633 \u0645\u06cc\u062f\u0647\u062f \u06cc\u0627 \u0628\u0647 Type Assertion \u062a\u06a9\u06cc\u0647 \u062f\u0627\u0631\u062f \u0631\u0627 \u0631\u0641\u0639 \u06a9\u0646\u06cc\u062f. \u0627\u0632 <code>go vet .\/...<\/code> \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0645\u0634\u06a9\u0648\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 API \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0645\u0648\u062c\u0648\u062f \u0634\u0641\u0627\u0641 \u0648 Type Assertion\u0647\u0627 \u0646\u0627\u062f\u0631 \u06cc\u0627 \u0627\u06cc\u0632\u0648\u0644\u0647\u0627\u0646\u062f\u060c \u0645\u0647\u0627\u062c\u0631\u062a \u0634\u0627\u06cc\u062f \u0627\u0631\u0632\u0634\u0634 \u0631\u0627 \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0647\u0634\u062f\u0627\u0631:<\/strong> \u062a\u063a\u06cc\u06cc\u0631 <code>RandomCard() interface{}<\/code> \u0628\u0647 <code>RandomCard() C<\/code> \u0628\u0631\u0627\u06cc \u0647\u0631 Caller\u0627\u06cc \u0628\u06cc\u0631\u0648\u0646 \u067e\u06a9\u06cc\u062c\u060c \u062a\u063a\u06cc\u06cc\u0631 API\u0627\u06cc \u0634\u06a9\u0633\u062a\u062f\u0647\u0646\u062f\u0647 \u0627\u0633\u062a. \u0645\u0633\u06cc\u0631 \u0627\u0645\u0646 \u062f\u0631 \u0622\u0646 \u0645\u0648\u0631\u062f: \u062a\u0627\u06cc\u067e Generic \u062c\u062f\u06cc\u062f\u06cc (\u0645\u062b\u0644\u0627\u064b <code>DeckGeneric[C Card]<\/code>) \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0645\u0648\u062c\u0648\u062f \u0645\u0639\u0631\u0641\u06cc\u060c \u0627\u0637\u0644\u0627\u0639\u06cc\u0647 Deprecated \u0628\u0647 \u062a\u0627\u06cc\u067e \u0642\u062f\u06cc\u0645\u06cc \u0628\u062f\u0647\u06cc\u062f \u0648 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f Caller\u0647\u0627 \u0645\u0646\u062a\u0642\u0644 \u0634\u0648\u0646\u062f. \u0627\u06af\u0631 Caller\u0647\u0627\u06cc \u062e\u0627\u0631\u062c\u06cc \u0628\u0647 \u062a\u0627\u06cc\u067e Export-\u0634\u062f\u0647 \u0648\u0627\u0628\u0633\u062a\u0647\u0627\u0646\u062f\u060c \u0622\u0646 \u0631\u0627 \u062f\u0631-\u062c\u0627\u06cc \u062e\u0648\u062f \u062a\u063a\u06cc\u06cc\u0631 \u0646\u062f\u0647\u06cc\u062f.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u0647\u0627\u06cc Generic \u062f\u0631 Go<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0637\u0631\u0627\u062d\u06cc Generic\u0647\u0627\u06cc Go \u0686\u0646\u062f\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0632\u0628\u0627\u0646\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0631\u062f\u0647 \u062a\u0627 \u0632\u0628\u0627\u0646 \u0648 Tooling \u0633\u0627\u062f\u0647 \u0628\u0645\u0627\u0646\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062a\u062f\u0647\u0627 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u062e\u0648\u062f\u0634\u0627\u0646 \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0642\u0637 Receiver (\u0648 \u062a\u0648\u0627\u0628\u0639 \u0633\u0637\u062d-\u0628\u0627\u0644\u0627) \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f Generic \u0628\u0627\u0634\u0646\u062f. \u0627\u06af\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u062f\u0648\u0645 \u0628\u0647 \u0645\u062a\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func (d *Deck&#91;C]) Map&#91;U any](f func(C) U) &#91;]U {\n    out := make(&#91;]U, 0, len(d.cards))\n    for _, c := range d.cards {\n        out = append(out, f(c))\n    }\n    return out\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># command-line-arguments\n.\/main.go:NN:NN: methods cannot have type parameters<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0631\u0627\u0647\u200c\u062d\u0644:<\/strong> \u062a\u0627\u0628\u0639 Generic \u0633\u0637\u062d-\u067e\u06a9\u06cc\u062c\u06cc \u06a9\u0647 Receiver \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0627\u0648\u0644\u06cc\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0645\u06cc\u06af\u06cc\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func MapDeck&#91;C any, U any](d *Deck&#91;C], f func(C) U) &#91;]U {\n    out := make(&#91;]U, 0, len(d.cards))\n    for _, c := range d.cards {\n        out = append(out, f(c))\n    }\n    return out\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u062c\u0627\u06cc <code>deck.Map(...)<\/code> \u0628\u0647\u200c\u0635\u0648\u0631\u062a <code>MapDeck(deck, func(c *PlayingCard) string { return c.String() })<\/code> \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f. \u0686\u0648\u0646 MapDeck \u0628\u0647 \u0641\u06cc\u0644\u062f Unexported \u06cc\u0639\u0646\u06cc cards \u0631\u0648\u06cc Deck \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u062f\u060c \u0628\u0627\u06cc\u062f \u062f\u0631 \u0647\u0645\u0627\u0646 \u067e\u06a9\u06cc\u062c\u0650 Deck \u062a\u0639\u0631\u06cc\u0641 \u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u0628\u0648\u062f Operator Overloading<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f <code>+<\/code> \u06cc\u0627 <code>*<\/code> \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e\u062a\u0627\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u0647 \u0648 \u0633\u067e\u0633 \u062f\u0631 \u062a\u0627\u0628\u0639 Generic \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. Constraint\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 constraints.Ordered \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Built-in \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 Operator \u062f\u0627\u0631\u0646\u062f \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u0646\u062f\u061b \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0627\u06cc\u062f \u0645\u062a\u062f (\u0645\u062b\u0644\u0627\u064b Add) \u0641\u0631\u0627\u0647\u0645 \u06a9\u0631\u062f\u0647 \u0648 \u0634\u0645\u0627 \u0622\u0646 \u0645\u062a\u062f\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062a\u0627\u0628\u0639 Generic \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u0628\u0648\u062f Type Switch \u0631\u0648\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f <code>switch x.(type)<\/code> \u0631\u0648\u06cc \u0645\u0642\u062f\u0627\u0631\u06cc \u0627\u0632 \u062a\u0627\u06cc\u067e T \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u0647\u06cc\u062f \u06a9\u0647 T \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func Describe&#91;T any](v T) string {\n    switch v.(type) {\n    case string:\n        return \"string\"\n    case int:\n        return \"int\"\n    default:\n        return \"other\"\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># command-line-arguments\n.\/main.go:NN:NN: cannot use type switch on type parameter value v<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0631\u0627\u0647\u200c\u062d\u0644:<\/strong> Type Switch \u0631\u0648\u06cc \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u0627\u06cc \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0646\u06af\u0647 \u0645\u06cc\u062f\u0627\u0631\u062f \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u0647\u06cc\u062f\u2014\u06cc\u0627 \u0627\u0632 Reflection \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u0628\u0648\u062f Specialization<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u06cc\u0627\u062f\u0647\u0633\u0627\u0632\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0627\u0632 \u062a\u0627\u0628\u0639 Generic \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e \u062e\u0627\u0635\u06cc \u0641\u0631\u0627\u0647\u0645 \u06a9\u0646\u06cc\u062f (\u0645\u062b\u0644\u0627\u064b \u0645\u0633\u06cc\u0631 \u0633\u0631\u06cc\u0639\u062a\u0631 \u0628\u0631\u0627\u06cc int). \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0634\u062f\u0647 \u0628\u0647\u200c\u0627\u0632\u0627\u06cc \u0647\u0631 GCShape \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u061b \u067e\u0633 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u0633\u06cc\u0631 \u06a9\u062f \u0633\u0631\u06cc\u0639\u062a\u0631 \u06cc\u0627 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0628\u0631\u0627\u06cc \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e\u06cc \u062e\u0627\u0635\u06cc \u0645\u062b\u0644 int \u062a\u0648\u0644\u06cc\u062f \u0646\u0645\u06cc\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Constraint\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0628\u0627\u0632\u06af\u0634\u062a\u06cc<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u062e\u06cc \u0627\u0644\u06af\u0648\u0647\u0627\u06cc Constraint \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc\u0634\u0648\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type Node&#91;T Node&#91;T]] interface {\n    Children() &#91;]T\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># command-line-arguments\n.\/main.go:NN:NN: interface type loop involving Node<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0631\u0627\u0647\u200c\u062d\u0644:<\/strong> \u0628\u0627\u0632\u06af\u0634\u062a \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0633\u0627\u062f\u0647\u2014\u0628\u062f\u0648\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u062e\u0648\u062f\u0627\u0631\u062c\u0627\u0639\u2014\u0634\u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type Node interface {\n    Children() &#91;]Node\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0648 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u0647\u0627\u06cc \u0633\u0631\u0631\u0627\u0633\u062a\u060c Constraint\u0647\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0628\u0647\u200c\u0646\u062f\u0631\u062a \u0644\u0627\u0632\u0645 \u0645\u06cc\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Generic \u062f\u0631 Go<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u0686\u0647 \u0648\u0642\u062a \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0631\u0627 \u062a\u0631\u062c\u06cc\u062d \u0628\u062f\u0647\u06cc\u0645<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062a\u0627\u0628\u0639 \u0641\u0642\u0637 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0645\u062a\u062f\u0647\u0627\u06cc\u06cc \u0635\u062f\u0627 \u0628\u0632\u0646\u062f \u0648 \u0647\u0631\u06af\u0632 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062a\u0627\u06cc\u067e \u0639\u06cc\u0646\u06cc \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f \u06cc\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u062f\u060c \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0633\u0627\u062f\u0647\u062a\u0631 \u0627\u0632 Generic \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u0646\u0633\u062e\u0647 Generic\nfunc PrintName&#91;C Card](c C) {\n    fmt.Println(c.Name())\n}\n\n\/\/ \u0646\u0633\u062e\u0647 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\nfunc PrintName(c interface{ Name() string }) {\n    fmt.Println(c.Name())\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u062f\u0648 \u06a9\u0627\u0631 \u0645\u06cc\u06a9\u0646\u0646\u062f\u061b \u0627\u0645\u0627 \u0646\u0633\u062e\u0647 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0647\u06cc\u0686 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0646\u062f\u0627\u0631\u062f. \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648\u0642\u062a\u06cc \u0628\u0647 \u062a\u0627\u06cc\u067e \u0639\u06cc\u0646\u06cc \u062f\u0631\u0648\u0646 \u062a\u0627\u0628\u0639 \u0627\u0647\u0645\u06cc\u062a \u0646\u0645\u06cc\u062f\u0647\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0686\u0647 \u0648\u0642\u062a Generic \u0631\u0627 \u062a\u0631\u062c\u06cc\u062d \u0628\u062f\u0647\u06cc\u0645<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 Generic \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648\u0642\u062a\u06cc \u0644\u0627\u0632\u0645 \u0627\u0633\u062a <strong>\u062a\u0627\u06cc\u067e \u0639\u06cc\u0646\u06cc \u0631\u0627 \u062d\u0641\u0638 \u06a9\u0646\u06cc\u062f<\/strong>: \u0647\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f\u060c Slice\u0627\u06cc \u0627\u0632 \u062a\u0627\u06cc\u067e \u0645\u0634\u062e\u0635\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0627\u0632 Type Assertion \u062f\u0631 \u0645\u062d\u0644\u0647\u0627\u06cc \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Constraint\u0647\u0627 \u0631\u0627 \u062a\u0627 \u062c\u0627\u06cc \u0645\u0645\u06a9\u0646 \u0645\u062d\u062f\u0648\u062f \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 <code>C any<\/code> \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u0627\u0645\u0627 \u062f\u0631\u0648\u0646 \u062a\u0627\u0628\u0639 <code>card.Name()<\/code> \u0631\u0627 \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062e\u0637\u0627\u06cc <code>card.Name undefined<\/code> \u0631\u0627 \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc\u06a9\u0646\u062f. \u0631\u0641\u0639: C \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u0627\u06cc \u06a9\u0647 Name() \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u06a9\u0646\u062f \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 API\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u06cc\u0627 \u0648\u0642\u062a\u06cc \u0646\u0642\u0634 \u062a\u0627\u06cc\u067e \u0631\u0648\u0634\u0646 \u0646\u06cc\u0633\u062a\u060c \u0627\u0632 \u0646\u0627\u0645\u0647\u0627\u06cc \u0645\u0639\u0646\u0627\u062f\u0627\u0631 (\u0645\u062b\u0644\u0627\u064b Element\u060c Key\u060c Value) \u0628\u0647\u200c\u062c\u0627\u06cc \u062d\u0631\u0648\u0641 \u0645\u0646\u0641\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0639\u062f\u0627\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0648\u0627\u0628\u0639 Generic \u0628\u0627 \u0628\u06cc\u0634 \u0627\u0632 \u062f\u0648-\u0633\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc\u060c \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u0634\u0627\u0646 \u0633\u062e\u062a \u0645\u06cc\u0634\u0648\u062f. Refactor \u06cc\u0627 \u06af\u0631\u0648\u0647\u06a9\u0631\u062f\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u062f\u0631 Struct \u06a9\u0648\u0686\u06a9 \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f1. Generic\u0647\u0627 \u06a9\u0650\u06cc \u0628\u0647 Go \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Go 1.18. \u0632\u0628\u0627\u0646 \u0627\u0632 \u0622\u0646 \u0632\u0645\u0627\u0646 \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0648 Constraint\u0647\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u06a9\u0631\u062f\u0647\u061b \u0648 Release\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u067e\u06cc\u0627\u062f\u0647\u0633\u0627\u0632\u06cc \u0631\u0627 \u067e\u0627\u06cc\u062f\u0627\u0631\u062a\u0631 \u06a9\u0631\u062f\u0647\u0627\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f2. [T any] \u062f\u0631 Go \u0686\u0647 \u0645\u0639\u0646\u0627\u06cc\u06cc \u062f\u0627\u0631\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0628\u0647 \u0646\u0627\u0645 T \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u06a9\u0646\u062f \u06a9\u0647 \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0628\u0627 \u0647\u0631 \u062a\u0627\u06cc\u067e Go \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0634\u0648\u062f. any \u06cc\u0639\u0646\u06cc Alias \u0628\u0631\u0627\u06cc interface{}\u061b \u067e\u0633 \u0647\u06cc\u0686 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u06cc \u0631\u0648\u06cc T \u0646\u0645\u06cc\u06af\u0630\u0627\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f3. \u0622\u06cc\u0627 Generic\u0647\u0627\u06cc Go \u06a9\u0646\u062f\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0639\u0645\u0644\u060c Generic\u0647\u0627\u06cc Go \u0633\u0631\u0628\u0627\u0631 \u0642\u0627\u0628\u0644-\u0627\u0646\u062f\u0627\u0632\u0647\u06af\u06cc\u0631\u06cc\u0650 \u06a9\u0645 \u06cc\u0627 \u0647\u06cc\u0686\u06cc \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0639\u0645\u0648\u0644 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u06cc\u06a9\u0646\u0646\u062f. \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0632 GCShape Stenciling \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u062f\u061b \u067e\u0633 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Pointer \u0627\u063a\u0644\u0628 \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u0633\u0627\u0632\u06cc \u0631\u0627 \u0634\u0631\u06cc\u06a9\u0646\u062f. \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u062f\u0627\u063a \u0631\u0627 \u0628\u0627 <code>go test -bench<\/code> \u0627\u0646\u062f\u0627\u0632\u0647 \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f4. \u0622\u06cc\u0627 \u0645\u06cc\u062a\u0648\u0627\u0646\u0645 \u0627\u0632 Generic\u0647\u0627 \u0628\u0627 \u0645\u062a\u062f\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0642\u0637 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u063a\u06cc\u0631\u0645\u0633\u062a\u0642\u06cc\u0645: Receiver \u0645\u06cc\u062a\u0648\u0627\u0646\u062f Generic \u0628\u0627\u0634\u062f (\u0645\u062b\u0644\u0627\u064b <code>func (d *Deck[C]) AddCard(card C)<\/code>)\u061b \u0627\u0645\u0627 \u0645\u062a\u062f\u0647\u0627 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u062e\u0648\u062f\u0634\u0627\u0646 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f5. Constraint\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc \u062f\u0631 Go \u0686\u06cc\u0633\u062a\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc\u06a9\u0646\u0646\u062f \u06a9\u062f\u0627\u0645 \u062a\u0627\u06cc\u067e\u0647\u0627 \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e\u06cc \u0628\u0627\u0634\u0646\u062f. \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u062a\u062f (\u0645\u062b\u0644\u0627\u064b \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc\u06cc \u06a9\u0647 Name() string \u062f\u0627\u0631\u0646\u062f) \u06cc\u0627 \u0645\u062c\u0645\u0648\u0639\u0647 \u062a\u0627\u06cc\u067e (\u0645\u062b\u0644\u0627\u064b <code>int | string<\/code>) \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f6. \u0686\u0647 \u0648\u0642\u062a \u0628\u0647\u200c\u062c\u0627\u06cc Generic \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0648\u0642\u062a\u06cc \u0641\u0642\u0637 \u0628\u0647 \u0631\u0641\u062a\u0627\u0631 \u0627\u0647\u0645\u06cc\u062a \u0645\u06cc\u062f\u0647\u06cc\u062f \u0648 \u0645\u062c\u0645\u0648\u0639\u0647 \u062a\u0627\u06cc\u067e\u0647\u0627 \u0628\u0627\u0632-\u0627\u0646\u062a\u0647\u0627\u0633\u062a. \u0627\u0632 Generic \u0648\u0642\u062a\u06cc \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u062a\u0627\u06cc\u067e \u0645\u0634\u062e\u0635\u06cc \u0631\u0627 \u062d\u0641\u0638 \u06cc\u0627 \u0628\u0627 \u0622\u0646 \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e\u06cc \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f7. \u0622\u06cc\u0627 Generic\u0647\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u062f\u0631 Go \u0645\u06cc\u0634\u0648\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0647. \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0645\u0633\u0626\u0644\u0647\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0631\u0627 \u062d\u0644 \u0645\u06cc\u06a9\u0646\u0646\u062f. \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u0647\u0627 \u0627\u0632 \u0647\u0631 \u062f\u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f8. \u0622\u06cc\u0627 Generic\u0647\u0627 \u0633\u0627\u0632\u06af\u0627\u0631-\u0639\u0642\u0628\u06cc \u0647\u0633\u062a\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0644\u0647. \u06a9\u062f\u06cc \u06a9\u0647 \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u06cc\u06a9\u0646\u062f \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u0634\u0648\u062f. \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647\u200c\u062a\u062f\u0631\u06cc\u062c \u0628\u0627 \u0645\u0639\u0631\u0641\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627 \u06cc\u0627 \u062a\u0648\u0627\u0628\u0639 Generic \u062c\u062f\u06cc\u062f \u062f\u0631 \u06a9\u0646\u0627\u0631 \u06a9\u062f \u0645\u0648\u062c\u0648\u062f\u060c \u0645\u0647\u0627\u062c\u0631\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0633\u062a-\u06a9\u0627\u0631\u062a \u0633\u0627\u062e\u062a\u06cc\u062f \u06a9\u0647 \u0628\u0627 Slice\u0627\u06cc \u0627\u0632 interface{} \u0648 Type Assertion \u0634\u0631\u0648\u0639 \u0634\u062f\u061b \u0633\u067e\u0633 \u0628\u0647 <code>Deck[C Card]<\/code> \u0648 \u062a\u0627\u0628\u0639 Generic \u06cc\u0639\u0646\u06cc printCard Refactor \u0634\u062f. Generic\u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e\u06cc \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u060c \u0646\u0628\u0648\u062f Type Assertion \u062f\u0631 \u0645\u062d\u0644\u0647\u0627\u06cc \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0648 \u06a9\u062f \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0628\u0631\u0627\u06cc \u0686\u0646\u062f\u06cc\u0646 \u062a\u0627\u06cc\u067e \u06a9\u0627\u0631\u062a\u2014\u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0628\u0627 \u062d\u0641\u0638 \u067e\u06cc\u0627\u062f\u0647\u0633\u0627\u0632\u06cc \u0634\u0641\u0627\u0641\u2014\u062f\u0627\u062f\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 Generic\u0647\u0627\u06cc Go \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u062f\u0650 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0648 \u0627\u0645\u0646-\u0627\u0632-\u0646\u0638\u0631-\u062a\u0627\u06cc\u067e\u06cc \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u06a9\u0647 \u0628\u0627 \u0686\u0646\u062f\u06cc\u0646 \u062a\u0627\u06cc\u067e \u06a9\u0627\u0631 \u06a9\u0646\u062f\u2014\u0628\u062f\u0648\u0646 \u0627\u0632 \u062f\u0633\u062a \u062f\u0627\u062f\u0646 \u0628\u0631\u0631\u0633\u06cc \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644. \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e (Placeholder\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627) \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u0647 \u0648\u2014\u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0645\u0627\u06cc\u0644\u2014\u0628\u0627 Constraint\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0645\u062d\u062f\u0648\u062f\u0634\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u061b \u062a\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631\u0633\u062a \u0631\u0627 \u0627\u0644\u0632\u0627\u0645\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0627\u0632 Type Assertion\u0647\u0627 \u0648 \u062e\u0637\u0627\u0647\u0627\u06cc \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627\u06cc\u06cc \u06a9\u0647 &hellip;<\/p>\n","protected":false},"author":9,"featured_media":7093,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[190,343],"tags":[],"class_list":["post-7090","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","category-python"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7090","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=7090"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7090\/revisions"}],"predecessor-version":[{"id":7091,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7090\/revisions\/7091"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/7093"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=7090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=7090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=7090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}