αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆ Go Design αž˜αž·αž“αž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž†αŸ’αž›αžΆαžαžœαŸƒ

αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αžαŸ‚αž€αž“αŸ’αž›αž„αž˜αž€αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Go αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαŸ” αž—αžŸαŸ’αžαž»αžαžΆαž„αž“αŸƒαž‚αŸ†αž“αž·αžαŸ” (αž”αŸ’αžšαž αŸ‚αž›: αž€αžΌαžŠαžŠαžΎαž˜αŸ’αž”αžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž˜αž»αžαž„αžΆαžšαž“αŸƒαž‚αŸ†αž“αž·αžαž˜αž½αž™) αž–αŸαž›αž‘αŸ†αž“αŸαžšαžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹ αž˜αž½αž™αž•αŸ’αž“αŸ‚αž€αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž·αž€αŸ’αžŸαžΆαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αž›αž½αž“αž―αž„αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αž›αž½αž“αž―αž„αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹ αž αžΎαž™αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž‚αŸ„αž›αž”αŸ†αžŽαž„αž“αŸƒαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Go αžαŸ’αž›αž½αž“αžœαžΆαžŸαž˜αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž–αžΆαž€αŸ’αž™αž–αžΈαžšαž”αžΈαž’αŸ†αž–αžΈαžœαžΆαŸ” αž‘αŸ…αžŸαž“αŸ’αž™αžΆαž“αžΉαž„ (αž”αŸ’αžšαž αŸ‚αž›αŸ– αž’αžαŸ’αžαž”αž‘αžŸαžšαžŸαŸαžšαž€αŸ’αž“αž»αž„αž†αŸ’αž“αžΆαŸ† 2015) αž‡αžΆαž—αžΆαžŸαžΆαž–αŸαž‰αž“αž·αž™αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΌαžŠαžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αŸ” αž—αžΆαžŸαžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™ Google αžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜αŸ” αž…αŸ†αžŽαž»αž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αžαŸ’αž‰αž»αŸ†αž‚αž·αžαžŠαŸ„αž™αžŸαŸ’αž˜αŸ„αŸ‡αžαŸ’αžšαž„αŸ‹αžαžΆαž€αžΆαžšαžšαž…αž“αžΆαž“αŸƒαž—αžΆαžŸαžΆ Go αž‚αžΊαž˜αž·αž“αž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž†αŸ’αž›αžΆαžαžœαŸƒαŸ”

αžšαž…αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžŸαŸ„αž™?

Go αž‚αžΊαž„αžΆαž™αžŸαŸ’αžšαž½αž›αžšαŸ€αž“αžŽαžΆαžŸαŸ‹ αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŽαžΆαžŸαŸ‹αžŠαŸ‚αž›αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž”αžΆαž“αž“αžΆαŸ†αžαŸ’αž‰αž»αŸ†αž“αŸ…αž›αŸ’αž„αžΆαž…αž˜αž½αž™ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αžŸαžšαžŸαŸαžšαž€αžΌαžŠαž”αžΆαž“αž™αŸ‰αžΆαž„αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αŸ” αžŸαŸ€αžœαž—αŸ…αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž’αŸ’αž›αžΆαž”αŸ‹αžšαŸ€αž“ Go αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ…αž€αŸ’αž“αž»αž„ Go (αž€αžΆαžšαž”αž€αž”αŸ’αžšαŸ‚), αžœαžΆαž˜αžΆαž“αž“αŸ…αž›αžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαŸ” αžŸαŸ€αžœαž—αŸ…αž“αŸαŸ‡ αžŠαžΌαž…αž‡αžΆαž€αžΌαžŠαž”αŸ’αžšαž—αž– Go αž•αŸ’αž‘αžΆαž›αŸ‹ αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž’αžΆαž“ αž˜αžΆαž“αž§αž‘αžΆαž αžšαžŽαŸαž€αžΌαžŠαž›αŸ’αž’ αž“αž·αž„αž˜αžΆαž“αž”αŸ’αžšαž αŸ‚αž› 150 αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž’αžΆαž…αž’αžΆαž“αž”αžΆαž“αž€αŸ’αž“αž»αž„αž˜αž½αž™αž›αžΎαž€αŸ” αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸαŸ‡αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αžšαžŸαŸ‹αžŸαŸ’αžšαžΆαž™αž“αŸ…αž–αŸαž›αžŠαŸ†αž”αžΌαž„ αž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž–αž·αž—αž–αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž–αŸ„αžšαž–αŸαž‰αž‘αŸ…αžŠαŸ„αž™αž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž“αŸ…β€‹αž‘αžΈβ€‹αž”αŸ†αž•αž»αž αž˜αž·αž“β€‹αž™αžΌαžšβ€‹αž˜αž·αž“β€‹αž†αžΆαž”αŸ‹β€‹αž‚αŸ†αž“αž·αžβ€‹αž˜αž½αž™β€‹αž€αžΎαžβ€‹αž‘αžΎαž„β€‹αžαžΆ β€œαžαžΎβ€‹αž“αŸαŸ‡β€‹αž–αž·αžβ€‹αž‡αžΆβ€‹αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αž˜αŸ‚αž“β€‹αž‘αŸ?”

Google αž’αŸ‡αž’αžΆαž„αžαžΆαž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αžšαž”αžŸαŸ‹ Go αž‚αžΊαž‡αžΆαž…αŸ†αžŽαž»αž…αž›αž€αŸ‹αžšαž”αžŸαŸ‹αžœαžΆ αž αžΎαž™αž—αžΆαžŸαžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αž›αž·αžαž—αžΆαž–αž’αžαž·αž”αžšαž˜αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αž’αŸ† αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžŸαŸαž™αžœαžΆαŸ” αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžŠαŸ‚αž›αž”αžΆαžαŸ‹ αž¬αž›αž˜αŸ’αž’αž·αžαž αž½αžŸαž αŸαžαž»αŸ” αž αžΎαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžαŸ’αžœαŸ‡αž€αžΆαžšαž‡αžΏαž‘αž»αž€αž…αž·αžαŸ’αžαž›αžΎαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž–αž½αž€αž‚αŸαž˜αž·αž“αž’αžΆαž…αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” αž”αŸ†αžŽαž„αž”αŸ’αžšαžΆαžαŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŠαŸ„αž™αž˜αž“αžŸαž·αž€αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžšαž…αž“αžΆαž—αžΆαžŸαžΆ αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αž…αŸ’αž”αžΆαžŸαŸ‹αž–αžΈαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžš αž™αžΎαž„αžαŸ’αžšαžΌαžœαž™αž›αŸ‹αž–αžΈαž€αžΆαžšαž›αžΎαž€αž‘αžΉαž€αž…αž·αžαŸ’αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž€αŸ†αž–αž»αž„αž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ Go αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαžΆαž˜αž‰αŸ’αž‰αžŠαžΌαž…αŸ’αž“αŸαŸ‡? αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαž˜αŸ’αžšαž„αŸ‹αž–αžΈαžšαž”αžΈ αž›αŸ„αž€ Rob Pike (αž”αŸ’αžšαž αŸ‚αž›αŸ– αž˜αŸ’αž“αžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž—αžΆαžŸαžΆ Go)αŸ–

αž…αŸ†αžŽαž»αž…αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‚αžΊαžαžΆαž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ (αž”αŸ’αžšαž αŸ‚αž›: Googlers) αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž’αŸ’αž“αž€αžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž‘αŸαŸ” αžαžΆαž˜αž€αŸ’αž”αž½αž“αž˜αž½αž™ αž–αž½αž€αž‚αŸαž“αŸ…αž€αŸ’αž˜αŸαž„αžŽαžΆαžŸαŸ‹ αž˜αž€αžšαž€αž™αžΎαž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŸαž·αž€αŸ’αžŸαžΆ αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž–αž½αž€αž‚αŸαž”αžΆαž“αžŸαž·αž€αŸ’αžŸαžΆ Java ឬ C/C++ ឬ Python αŸ” αž–αž½αž€αž‚αŸβ€‹αž˜αž·αž“β€‹αž’αžΆαž…β€‹αž™αž›αŸ‹β€‹αž—αžΆαžŸαžΆβ€‹αžŠαŸβ€‹αž’αžŸαŸ’αž…αžΆαžšαŸ’αž™β€‹αž˜αž½αž™β€‹αž“αŸ„αŸ‡β€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž€αŸ’αž“αž»αž„β€‹αž–αŸαž›β€‹αž‡αžΆαž˜αž½αž™β€‹αž‚αŸ’αž“αžΆβ€‹αž“αŸ„αŸ‡ αž™αžΎαž„β€‹αž…αž„αŸ‹β€‹αž±αŸ’αž™β€‹αž–αž½αž€αž‚αŸβ€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž›αŸ’αž’β€‹αŸ” αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž—αžΆαžŸαžΆαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‚αž½αžšαžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž‚αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž™αž›αŸ‹ αž“αž·αž„αžšαŸ€αž“αŸ”
 
αž‚αžΆαžαŸ‹β€‹αž‚αž½αžšβ€‹αžαŸ‚β€‹αžŸαŸ’αž‚αžΆαž›αŸ‹β€‹αž”αŸ’αžšαž αŸ‚αž›β€‹αž“αž·αž™αžΆαž™β€‹αžŸαŸ’αžšαžŠαŸ€αž„β€‹αž“αžΉαž„ C. αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž’αŸ’αžœαžΎαž€αžΆαžšαž“αŸ… Google αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αžΆαž‡αžΈαž–αžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž αžΎαž™αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžŸαŸ’αž‚αžΆαž›αŸ‹αž—αžΆαžŸαžΆαž“αžΈαžαž·αžœαž·αž’αžΈ αž‡αžΆαž–αž·αžŸαŸαžŸαž‚αŸ’αžšαž½αžŸαžΆαžš C αŸ” αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αž›αž·αžαž—αžΆαž–αžšαž αŸαžŸαž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αž˜αžΈαž˜αžΆαž“αž“αŸαž™αžαžΆ αž—αžΆαžŸαžΆαž˜αž·αž“αž‚αž½αžšαž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαžšαŸ‰αžΆαžŒαžΈαž€αžΆαž›αŸ‹αž–αŸαž€αž‘αŸαŸ”

αž’αŸ’αžœαžΈ? αžŠαžΌαž…αŸ’αž“αŸαŸ‡ Rob Pike αž“αž·αž™αžΆαž™αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžαžΆαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αŸ… Google αž˜αž·αž“αž›αŸ’αž’αž‘αŸ αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž”αž„αŸ’αž€αžΎαžαž—αžΆαžŸαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž“αž»αžŸαŸ’αžŸαž›αŸ’αž„αž„αŸ‹ (αž”αŸ’αžšαž αŸ‚αž›: dumbed down) αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž–αž½αž€αž‚αŸαž’αžΆαž…αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž˜αž½αž™αž”αžΆαž“αŸ” αž˜αžΎαž›β€‹αž˜αž·αžαŸ’αžβ€‹αžšαž½αž˜β€‹αž€αžΆαžšαž„αžΆαžšβ€‹αžαŸ’αž›αž½αž“β€‹αž―αž„β€‹αž€αŸ’αžšαž’αžΊαžαž€αŸ’αžšαž‘αž˜β€‹αž”αŸ‚αž”β€‹αžŽαžΆ? αžαŸ’αž‰αž»αŸ†αžαŸ‚αž„αžαŸ‚αž‡αžΏαžαžΆαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžšαž”αžŸαŸ‹ Google αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŠαŸ„αž™αž’αŸ’αž“αž€αž—αŸ’αž›αžΊαž”αŸ†αž•αž»αž αž“αž·αž„αž›αŸ’αž’αž”αŸ†αž•αž»αžαž“αŸ…αž›αžΎαž•αŸ‚αž“αžŠαžΈαŸ” αžαžΎβ€‹αž–αž½αž€β€‹αž‚αŸβ€‹αž”αŸ’αžšαžΆαž€αžŠβ€‹αž‡αžΆβ€‹αž’αžΆαž…β€‹αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™β€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž–αž·αž”αžΆαž€β€‹αž‡αžΆαž„β€‹αž“αŸαŸ‡β€‹αž‘αŸ?

αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαž“αŸƒαž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αž αž½αžŸαž αŸαžαž»

αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αž‚αžΊαž‡αžΆαž‚αŸ„αž›αžŠαŸ…αžŠαŸαžŸαž€αŸ’αžαž·αžŸαž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαž…αž“αžΆαžŽαžΆαž˜αž½αž™ αž αžΎαž™αž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αž’αŸ’αžœαžΎαž±αŸ’αž™αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžŸαžΆαž˜αž‰αŸ’αž‰αž‚αžΊαž–αž·αž”αžΆαž€αžŽαžΆαžŸαŸ‹αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αž“αŸ…αž–αŸαž›αž–αŸ’αž™αžΆαž™αžΆαž˜αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰ (αž¬αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž”αž„αŸ’αž αžΆαž‰) αž‡αž½αž“αž€αžΆαž›αž§αž”αž€αžšαžŽαŸαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž‚αžΊαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ” αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰ αž“αž·αž„αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž›αž€αŸ’αžαžŽαŸˆαž›αŸ’αž’αž”αŸ†αž•αž»αžαž“αŸƒαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžŽαŸ’αžαžΆαž›αžŠαŸ‚αž›αž—αžΆαžŸαžΆαž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž’αžšαžΌαž”αžΈαžŠαŸαž†αžΎαžαž†αžΆαž™ αžŠαŸ‚αž›αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž™αž›αŸ‹ αž“αž·αž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”

αž˜αž·αž“αž”αž‰αŸ’αž…αŸαž‰αž˜αžαž·αžαŸ’αž›αžΆαŸ†αž„

αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαžšαž”αžŸαŸ‹αžαŸ’αž›αž½αž“αž…αŸ†αž–αŸ„αŸ‡αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰ Go αžαŸ’αžœαŸ‡αž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž™αž›αŸ‹αžαžΆαž‡αžΆαž’αž˜αŸ’αž˜αž‡αžΆαžαž·αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž“αŸαŸ‡β€‹αž”αŸ’αžšαž αŸ‚αž›β€‹αž‡αžΆβ€‹αž‡αžΆβ€‹αž‚αŸ†αž“αž·αžβ€‹αž›αŸ’αž’β€‹αžŠαŸ†αž”αžΌαž„β€‹αž‘αžΎαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž’αž“αž»αžœαžαŸ’αžβ€‹αžœαžΆβ€‹αž‡αžΆβ€‹αž›αž‘αŸ’αž’αž•αž›β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αžŸαžšαžŸαŸαžšβ€‹αž€αžΌαžŠαŸ” αž αŸαžαž»αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž“αŸαŸ‡αž‚αž½αžšαžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹ - αžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αžΆαž“αž€αžΌαžŠαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαž‘αŸƒ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΆαž˜αž–αž·αž αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžαŸ‚αž€αžΆαžšαž’αžΆαž“αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž˜αž·αž“αž˜αžΆαž“αž’αž€αŸ’αžŸαžšαž€αžΆαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Go: αž…αŸ’αžšαžΎαž“ αž¬αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαžŸαŸ„αŸ‡αŸ”

αž§αž‘αžΆαž αžšαžŽαŸ αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž»αž„αžŸαžΌαž›αžŠαŸ‚αž›αž’αžΆαž“ stdin αž¬αž―αž€αžŸαžΆαžšαž–αžΈαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αžΉαž„αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

package main

import (
    "bufio"
    "flag"
    "fmt"
    "log"
    "os"
)

func main() {

    flag.Parse()
    flags := flag.Args()

    var text string
    var scanner *bufio.Scanner
    var err error

    if len(flags) > 0 {

        file, err := os.Open(flags[0])

        if err != nil {
            log.Fatal(err)
        }

        scanner = bufio.NewScanner(file)

    } else {
        scanner = bufio.NewScanner(os.Stdin)
    }

    for scanner.Scan() {
        text += scanner.Text()
    }

    err = scanner.Err()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(text)
}

αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž€αžΌαžŠαž“αŸαŸ‡αž€αŸαž–αŸ’αž™αžΆαž™αžΆαž˜αž±αŸ’αž™αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž‘αžΌαž‘αŸ…αžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“αž€αŸαžŠαŸ„αž™ αž€αŸαž–αžΆαž€αŸ’αž™αžŸαŸ†αžŠαžΈαž”αž„αŸ’αžαŸ†αžšαž”αžŸαŸ‹ Go αž‘αž‘αž½αž›αž”αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžœαž·αž’αžΈ αž αžΎαž™αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž½αž™αž“αžΉαž„αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αž…αŸ†αž“αž½αž“αž€αžΌαžŠαž…αŸ’αžšαžΎαž“αŸ”

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž§αž‘αžΆαž αžšαžŽαŸαž‚αžΊαž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„ D:

import std.stdio, std.array, std.conv;

void main(string[] args)
{
    try
    {
        auto source = args.length > 1 ? File(args[1], "r") : stdin;
        auto text   = source.byLine.join.to!(string);

        writeln(text);
    }
    catch (Exception ex)
    {
        writeln(ex.msg);
    }
}

αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αžŽαžΆαž’αžΆαž…αž’αžΆαž“αž”αžΆαž“αž…αŸ’αžšαžΎαž“αž‡αžΆαž„? αžαŸ’αž‰αž»αŸ†β€‹αž“αžΉαž„β€‹αž•αŸ’αžαž›αŸ‹β€‹αž€αžΆαžšβ€‹αž”αŸ„αŸ‡β€‹αž†αŸ’αž“αŸ„αžβ€‹αžšαž”αžŸαŸ‹β€‹αžαŸ’αž‰αž»αŸ†β€‹αž‘αŸ…β€‹αž²αŸ’αž™ D. αž€αžΌαžŠβ€‹αžšαž”αžŸαŸ‹β€‹αž‚αžΆαžαŸ‹β€‹αž‚αžΊβ€‹αž’αžΆαž…β€‹αž’αžΆαž“β€‹αž”αžΆαž“β€‹αž…αŸ’αžšαžΎαž“β€‹αž‡αžΆαž„ αž–αŸ’αžšαŸ„αŸ‡β€‹αž‚αžΆαžαŸ‹β€‹αž–αžŽαŸŒαž“αžΆβ€‹αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–β€‹αž€αžΆαž“αŸ‹β€‹αžαŸ‚β€‹αž…αŸ’αž”αžΆαžŸαŸ‹αŸ” αžƒ αž”αŸ’αžšαžΎαž‚αŸ†αž“αž·αžαžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰αž…αŸ’αžšαžΎαž“ (αž”αŸ’αžšαž αŸ‚αž›: αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžšαž‡αŸ†αž“αž½αžŸ ΠΈ αž‚αŸ†αžšαžΌ) αž‡αžΆαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸ Go αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αž·αžαž‡αžΆαž˜αž·αž“αž˜αžΆαž“αž’αŸ’αžœαžΈαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž€αŸ’αž“αž»αž„αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž–αž½αž€αž‚αŸαŸ”

αž“αžšαž€αž“αŸƒαž€αžΆαžšαž…αž˜αŸ’αž›αž„

αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžŠαŸαž–αŸαž‰αž“αž·αž™αž˜αž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’ Go αž‚αžΊαž—αžΆαž–αž‘αžΌαž‘αŸ…αŸ” αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹ αžœαžΆαž“αžΉαž„αž‡αž½αž™αž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž€αžΌαžŠαžŠαŸ‚αž›αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹ αžŠαžΎαž˜αŸ’αž”αžΈαž‚αžΆαŸ†αž‘αŸ’αžšαž”αŸ’αžšαž—αŸαž‘αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž˜αž»αžαž„αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžΌαž€αžŸαžšαž»αž”αž”αž‰αŸ’αž‡αžΈαž…αŸ†αž“αž½αž“αž‚αžαŸ‹αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αž€αŸ’αžšαŸ…αž–αžΈαž€αžΆαžšαž…αž˜αŸ’αž›αž„αž”αž·αž‘αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž»αžαž„αžΆαžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹αžœαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž…αŸ†αž“αž½αž“αž‚αžαŸ‹αž“αžΈαž˜αž½αž™αŸ— αž˜αž·αž“αž˜αžΆαž“αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αŸαŸ–

package main

import "fmt"

func int64Sum(list []int64) (uint64) {
    var result int64 = 0
    for x := 0; x < len(list); x++ {
        result += list[x]
    }
    return uint64(result)
}

func int32Sum(list []int32) (uint64) {
    var result int32 = 0
    for x := 0; x < len(list); x++ {
        result += list[x]
    }
    return uint64(result)
}

func int16Sum(list []int16) (uint64) {
    var result int16 = 0
    for x := 0; x < len(list); x++ {
        result += list[x]
    }
    return uint64(result)
}

func int8Sum(list []int8) (uint64) {
    var result int8 = 0
    for x := 0; x < len(list); x++ {
        result += list[x]
    }
    return uint64(result)
}

func main() {

    list8  := []int8 {1, 2, 3, 4, 5}
    list16 := []int16{1, 2, 3, 4, 5}
    list32 := []int32{1, 2, 3, 4, 5}
    list64 := []int64{1, 2, 3, 4, 5}

    fmt.Println(int8Sum(list8))
    fmt.Println(int16Sum(list16))
    fmt.Println(int32Sum(list32))
    fmt.Println(int64Sum(list64))
}

αž αžΎαž™αž§αž‘αžΆαž αžšαžŽαŸαž“αŸαŸ‡αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αžŠαŸ‚αž›αž”αžΆαž“αž…αž»αŸ‡αž αžαŸ’αžαž›αŸαžαžΆαž‘αŸαŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž”αŸ†αž–αžΆαž“αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž›αžΎαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αŸƒαž€αžΆαžšαž˜αž·αž“αž’αŸ’αžœαžΎαž˜αŸ’αžαž„αž‘αŸ€αžαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ (αžŸαŸ’αž„αž½αž) αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŠαŸαž›αŸ’αž”αžΈαž›αŸ’αž”αžΆαž‰ αž“αž·αž„αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž”αŸ†αž•αž»αžαž˜αž½αž™ αž€αžΆαžšαž˜αž·αž“αž’αžΎαž–αžΎ αžŠαŸ‚αž›αž‡αžΆαž”αŸ’αžšαž—αž–αž“αŸƒαž€αŸ†αž αž»αžŸαž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž αŸαžαž»αž’αŸ’αžœαžΈ Go αž’αŸ’αžœαžΎαž”αŸ‚αž”αž“αŸαŸ‡? αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αžŠαŸαž‚αž½αžšαž±αŸ’αž™αž—αŸαž™αžαŸ’αž›αžΆαž…αž“αŸƒαž—αžΆαžŸαžΆαŸ”

αž§αž‘αžΆαž αžšαžŽαŸαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸ…αž›αžΎ D:

import std.stdio;
import std.algorithm;

void main(string[] args)
{
    [1, 2, 3, 4, 5].reduce!((a, b) => a + b).writeln;
}

αžŸαžΆαž˜αž‰αŸ’αž‰ αž†αžΎαžαž†αžΆαž™ αž“αž·αž„αžαŸ’αžšαž„αŸ‹αž‘αŸ…αž…αŸ†αžŽαž»αž…αŸ” αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž”αŸ’αžšαžΎαž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‚αžΊ reduce αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž‚αŸ†αžšαžΌ αž“αž·αž„αž–αŸ’αž™αžΆαž€αžšαžŽαŸαŸ” αž”αžΆαž‘ αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰β€‹αž˜αŸ’αžŠαž„β€‹αž‘αŸ€αžβ€‹αž‡αžΆαž„β€‹αž€αŸ†αžŽαŸ‚ Go αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž˜αž·αž“β€‹αž–αž·αž”αžΆαž€β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž’αŸ’αž“αž€β€‹αžŸαžšαžŸαŸαžšβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž†αŸ’αž›αžΆαžαžœαŸƒβ€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž™αž›αŸ‹β€‹αž“αŸ„αŸ‡β€‹αž‘αŸαŸ” αžαžΎβ€‹αž§αž‘αžΆαž αžšαžŽαŸβ€‹αž˜αž½αž™β€‹αžŽαžΆβ€‹αžŠαŸ‚αž›β€‹αž„αžΆαž™β€‹αžŸαŸ’αžšαž½αž›β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αžšαž€αŸ’αžŸαžΆ αž“αž·αž„β€‹αž„αžΆαž™β€‹αž’αžΆαž“?

αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αž›αžΌαžœαžœαžΆαž„αž”αŸ’αžšαž—αŸαž‘αžŸαžΆαž˜αž‰αŸ’αž‰

αžαŸ’αž‰αž»αŸ†αžŸαŸ’αžšαž˜αŸƒαžαžΆαž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Go αžŠαŸ‚αž›αž’αžΆαž“αžšαžΏαž„αž“αŸαŸ‡αž“αžΉαž„αž•αŸ’αž‘αž»αŸ‡αž˜αžΆαžαŸ‹αž αžΎαž™αžŸαŸ’αžšαŸ‚αž€αžαžΆ "αž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž’αŸ’αžœαžΎαžœαžΆαžαž»αžŸ!" αž˜αžΆαž“αžœαž·αž’αžΈαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž˜αž»αžαž„αžΆαžšαž‘αžΌαž‘αŸ… αž“αž·αž„αž”αŸ’αžšαž—αŸαž‘ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž’αŸ’αžœαžΎαž±αŸ’αž™αžαžΌαž…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαž—αŸαž‘αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„!

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž‡αž½αžŸαž‡αž»αž›αž—αžΆαžŸαžΆαž†αŸ„αžαž›αŸ’αž„αž„αŸ‹αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαŸ–

package main

import "fmt"
import "reflect"

func Reduce(in interface{}, memo interface{}, fn func(interface{}, interface{}) interface{}) interface{} {
    val := reflect.ValueOf(in)

    for i := 0; i < val.Len(); i++ {
        memo = fn(val.Index(i).Interface(), memo)
    }

    return memo
}

func main() {

    list := []int{1, 2, 3, 4, 5}

    result := Reduce(list, 0, func(val interface{}, memo interface{}) interface{} {
        return memo.(int) + val.(int)
    })

    fmt.Println(result)
}

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸαŸ‡αŸ” Reduce αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αž…αžΈαž–αžΈαž’αžαŸ’αžαž”αž‘ αž“αž·αž™αž˜αž“αŸαž™αž‘αžΌαž‘αŸ…αž“αŸ…αž€αŸ’αž“αž»αž„ Go (αž”αŸ’αžšαž αŸ‚αž›αŸ– αžαŸ’αž‰αž»αŸ†αžšαž€αž˜αž·αž“αžƒαžΎαž‰αž€αžΆαžšαž”αž€αž”αŸ’αžšαŸ‚αž‘αŸ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžšαžΈαž€αžšαžΆαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‡αž½αž™αž€αŸ’αž“αž»αž„αžšαžΏαž„αž“αŸαŸ‡)αŸ” αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹, αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž‡αžΆ idiomatic, αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αžƒαžΎαž‰αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆ idiomatic αŸ” αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ interface{} - farce αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαžαŸ‚αžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ†αž›αž„αž€αžΆαžšαžœαžΆαž™αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž‘αž‘αŸ αž αžΎαž™αž‚αŸ’αžšαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž’αž“αž»αžœαžαŸ’αžαžœαžΆ αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αžŸαŸαžšαžΈαž—αžΆαž–αž–αŸαž‰αž›αŸαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž“αž»αžŸαŸ’αžŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαŸ” αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž‚αžΊαž’αžΆαž€αŸ’αžšαž€αŸ‹αžŽαžΆαžŸαŸ‹ αž αžΎαž™αž“αŸ„αŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž€αžΆαž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αŸ‚αž”αž“αŸαŸ‡αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž–αŸαž›αžšαžαŸ‹αŸ” αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚ Rob Pike αž˜αž·αž“αž…αžΌαž›αž…αž·αžαŸ’αžαž”αž»αž‚αŸ’αž‚αž›αžŠαŸ‚αž›αž”αŸ†αž–αžΆαž“αž›αžΎαžšαžΏαž„αž“αŸαŸ‡ αžŠαžΌαž…αžŠαŸ‚αž›αž‚αžΆαžαŸ‹αž”αžΆαž“αž›αžΎαž€αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž˜αž½αž™αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž§αž”αž€αžšαžŽαŸαžŠαŸαž˜αžΆαž“αž₯αž‘αŸ’αž’αž·αž–αž›αžŠαŸ‚αž›αž‚αž½αžšαž”αŸ’αžšαžΎαžŠαŸ„αž™αž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“αŸ” αžœαžΆαž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ€αžŸαžœαžΆαž„αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ”

αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž™αž€αž‚αŸ†αžšαžΌ D αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαžŸαž˜αž αŸαžαž»αžŸαž˜αž•αž›αž“αŸαŸ‡αŸ” αžαžΎβ€‹αž’αŸ’αž“αž€β€‹αžŽαžΆβ€‹αž’αžΆαž…β€‹αž“αž·αž™αžΆαž™β€‹αž”αŸ‚αž”β€‹αž“αŸαŸ‡β€‹αžŠαŸ„αž™β€‹αžšαž”αŸ€αž”β€‹αžŽαžΆ interface{} αž’αžΆαž…β€‹αž’αžΆαž“β€‹αž”αžΆαž“β€‹αž…αŸ’αžšαžΎαž“β€‹αž‡αžΆαž„ αž¬β€‹αžŸαžΌαž˜αŸ’αž”αžΈβ€‹αžαŸ‚β€‹αžœαžΆαž™β€‹αžŠαŸ„αž™β€‹αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–?

αžœαž·αž”αžαŸ’αžαž·αž“αŸƒαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™

Go αž˜αžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž›αžΎαž€αŸ†αž–αžΌαž›αž“αŸƒαž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž”αž„αŸ’αž αŸ„αŸ‡αž–αŸαž‰αž“αž·αž™αž˜ VCS αŸ”. αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™ Go αžŠαžΉαž„αž–αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‘αžΆαŸ†αž„αž“αŸαŸ‡ αž αžΎαž™αž’αžΆαž…αž‘αžΆαž‰αž™αž€ αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αžŠαŸ†αž‘αžΎαž„αž€αžΌαžŠαž–αžΈαž–αž½αž€αžœαžΆαž”αžΆαž“αž—αŸ’αž›αžΆαž˜αŸ—αŸ” αžαžŽαŸˆβ€‹αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž’αžŸαŸ’αž…αžΆαžšαŸ’αž™, αž˜αžΆαž“β€‹αž€αŸ†αž αž»αžŸβ€‹αž…αž˜αŸ’αž”αž„β€‹αž‡αžΆαž˜αž½αž™β€‹αž“αžΉαž„β€‹αž€αŸ†αžŽαŸ‚β€‹! αž”αžΆαž‘/αž…αžΆαžŸ αžœαžΆαž‡αžΆαž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΌαžŠαž”αŸ’αžšαž—αž–αž–αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαžΌαž…αž‡αžΆ github ឬ bitbucket αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸ Go αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αŸ†αžŽαŸ‚αž”αžΆαž“αž‘αŸαŸ” αž αžΎαž™αž˜αŸ’αžαž„αž‘αŸ€αžαž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αžŠαŸ„αž™αž…αŸ†αžŽαžΆαž™αž“αŸƒαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαŸ” αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž’αžΆαž…αž™αž›αŸ‹αž–αžΈαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αŸƒαž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŸαž½αžšαžŸαŸ†αžŽαž½αžšαž’αŸ†αž–αžΈαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡ αž€αŸ’αžšαž»αž˜αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ Go αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αžœαŸαž‘αž·αž€αžΆαžŠαŸ‚αž›αžšαŸ€αž”αžšαžΆαž”αŸ‹αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž“αžΉαž„αž‘αžΆαž€αŸ‹αž‘αž„αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αŸ” αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‚αžΊαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž…αž˜αŸ’αž›αž„αžƒαŸ’αž›αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž˜αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž˜αž½αž™αžαŸ’αž„αŸƒ αž αžΎαž™αž‘αž»αž€αžœαžΆαž±αŸ’αž™ "αžŠαžΌαž…αžŠαŸ‚αž›αž“αŸ…"αŸ” αžαžΎαž–αž½αž€αž‚αŸαž€αŸ†αž–αž»αž„αž‚αž·αžαž’αŸ’αžœαžΈ? αž™αžΎαž„αž˜αžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸ†αžŽαŸ‚αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αžŸαŸ’αž›αžΆαž€ αž“αž·αž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž€αŸ†αžŽαŸ‚αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαž Go αž˜αž·αž“αž’αžΎαž–αžΎ αž αžΎαž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž…αž˜αŸ’αž›αž„αž€αžΌαžŠαž”αŸ’αžšαž—αž–αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αž₯αžœαŸ‰αžΆαž“αŸ‹αžœαž”αŸ’αž”αž’αž˜αŸŒαž–αžΈαžŸαŸŠαžΈ

αžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† Go αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž’αŸ’αž“αž€αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎ C αž–αŸαž‰αž˜αž½αž™αž‡αžΈαžœαž·αžαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž“αž·αž„αžŠαŸ„αž™αž’αŸ’αž“αž€αžŠαŸ‚αž›αž˜αž·αž“αž…αž„αŸ‹αžŸαžΆαž€αž›αŸ’αž”αž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž˜αžΈαŸ” αž—αžΆαžŸαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžαžΆαž‡αžΆ C αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž„αŸ‹αž”αž“αŸ’αžαŸ‚αž˜ (αžŠαžΎαž˜αŸ”: αž€αž„αŸ‹αž αŸ’αžœαžΉαž€αž αžΆαžαŸ‹) αž˜αž·αž“αž˜αžΆαž“αž‚αŸ†αž“αž·αžαžαŸ’αž˜αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαž‘αŸαž›αžΎαž€αž›αŸ‚αž„αžαŸ‚αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆ (αžŠαŸ‚αž›αžαžΆαž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž‚αžΊαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžŽαžΆαžŸαŸ‹) αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαž’αžΆαž˜αŸ‰αžΆαžŸαŸ‹αž˜αž½αž™αŸ” αž’αŸ’αž“αž€αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαžŠαŸαž›αŸ’αž’αž₯αžαžαŸ’αž…αŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαžŠαŸ‚αž›αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αžΆαž“αŸ”

αž”αž‰αŸ’αž αžΆαžŠαŸαž‚αž½αžšαž±αŸ’αž™αž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αž˜αž½αž™αž‘αŸ€αžαž‚αžΊαžαžΆ Go αž‚αžΊαž‡αžΆαž—αžΆαžŸαžΆαž“αžΈαžαž·αžœαž·αž’αžΈ (αžŠαžΌαž…αž‡αžΆαž—αžΆαž–αž—αŸαž™αžšαž“αŸ’αž’αžαŸ‹αžŸαŸ’αž„αžΆαžαŸ‹αžšαž”αžŸαŸ‹ C) αŸ” αž’αŸ’αž“αž€αž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αžΌαžŠαž€αŸ’αž“αž»αž„αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αž“αžΈαžαž·αžœαž·αž’αžΈαžŠαŸ‚αž›αž˜αžΆαž“αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžαžΆαž…αžΆαžŸαŸ‹ αž“αž·αž„αž αž½αžŸαžŸαž˜αŸαž™αŸ” αžαŸ’αž‰αž»αŸ†αžŠαžΉαž„αžαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαž˜αŸ’αžšαž„αŸ‹αž‘αž·αžŸαžœαžαŸ’αžαž»αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž‚αŸ’αžšαžΆαž”αŸ‹αž€αžΆαŸ†αž—αŸ’αž›αžΎαž„αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αžΆαž…αžŸαž„αŸ’αžαŸαž”αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž‘αŸ…αž‡αžΆαž”αŸ’αžšαž—αŸαž‘ αž“αž·αž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαžœαŸαž…αžαŸ’αž…αž”αŸ‹αŸ”

αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αž›αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

Go αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžšαž…αž“αžΆβ€‹αž‘αžΎαž„β€‹αž±αŸ’αž™β€‹αžŸαžΆαž˜αž‰αŸ’αž‰ αž αžΎαž™β€‹αžœαžΆβ€‹αž‘αž‘αž½αž›β€‹αž”αžΆαž“β€‹αž‡αŸ„αž‚αž‡αŸαž™β€‹αžαžΆαž˜β€‹αž‚αŸ„αž›αžŠαŸ…β€‹αž“αŸ„αŸ‡αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžŸαŸ„αž™ αžŠαŸ„αž™αž”αŸ’αžšαžΎαž—αžΆαžŸαžΆαž…αžΆαžŸαŸ‹αž‡αžΆαž‚αŸ†αžšαžΌαŸ” αžœαžΆαž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αž“αžΌαžœαž§αž”αž€αžšαžŽαŸαžŸαžΆαž˜αž‰αŸ’αž‰αŸ—αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžšαžΏαž„αžŸαžΆαž˜αž‰αŸ’αž‰αŸ—αŸ” αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž’αžΆαž“ αž“αž·αž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ’αžšαžΎαŸ”

αžœαžΆβ€‹αž‡αžΆβ€‹αž–αžΆαž€αŸ’αž™β€‹αžŸαŸ†αžŠαžΈβ€‹αž˜αž·αž“β€‹αž‚αž½αžšαž±αŸ’αž™β€‹αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸ αž“αž·αž„β€‹αž’αžΆαž€αŸ’αžšαž€αŸ‹β€‹αž”αŸ†αž•αž»αžβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž†αŸ’αž›αžΆαžαžœαŸƒαŸ”

αžŸαŸ’αž‘αŸ’αžšαžΈαž˜ Mersinvald αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹