ืคืืจื•ื•ืืก ื’ื™ื™ืŸ ื“ื™ื–ื™ื™ืŸ ืื™ื– ืฉืœืขื›ื˜ ืคึฟืึทืจ ืกืžืึทืจื˜ ืคึผืจืึธื•ื’ืจืึทืžืขืจื–

ืื™ืŸ ื“ื™ ืœืขืฆื˜ืข ื—ื“ืฉื™ื ืื™ืš ื’ืขื•ื•ื™ื™ื ื˜ Go ืคึฟืึทืจ ื™ืžืคึผืœืึทืžืึทื ืฅ. ื“ืขืจื•ื•ื™ื™ึทื– ืคื•ืŸ ื‘ืึทื’ืจื™ืฃ (ืึทืคึผืคึผืจืึธืงืก.: ืงืึธื“ ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ืึท ื’ืขื“ืึทื ืง) ืื™ืŸ ื–ื™ื™ืŸ ืคืจื™ื™ ืฆื™ื™ื˜, ื˜ื™ื™ืœ ืฆื• ืœืขืจื ืขืŸ ื“ื™ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš ื–ื™ืš. ื“ื™ ืžื’ื™ืœื” ื–ื™ืš ื–ืขื ืขืŸ ื–ื™ื™ืขืจ ืคึผืฉื•ื˜ ืื•ืŸ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื“ืขืจ ืฆื™ืœ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืึธื‘ืขืจ ื“ื™ ื“ืขืจืคืึทืจื•ื ื’ ืคื•ืŸ ื ื™ืฆืŸ Go ื–ื™ืš ืคืืจื“ื™ื ื˜ ืึท ื‘ื™ืกืœ ื•ื•ืขืจื˜ืขืจ ื•ื•ืขื’ืŸ ืื™ื. ื’ื™ื™ ื”ื‘ื˜ื—ื•ืช ืฆื• ื–ื™ื™ืŸ (ืึทืคึผืคึผืจืึธืงืก.: ืึทืจื˜ื™ืงืœ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ 2015) ืึท ืคืึธืœืงืก ืฉืคึผืจืึทืš ืคึฟืึทืจ ืขืจื ืกื˜ ืกืงืึทืœืึทื‘ืœืข ืงืึธื“. ื“ื™ ืฉืคึผืจืึทืš ืื™ื– ื‘ืืฉืืคืŸ ื“ื•ืจืš Google, ื•ื•ื• ืขืก ืื™ื– ืึทืงื˜ื™ื•ื•ืœื™ ื’ืขื ื™ืฆื˜. ื“ื™ ื“ื ืึธ ืฉื•ืจื”, ืื™ืš ื”ืึธื ืขืกื˜ืœื™ ื˜ืจืึทื›ื˜ืŸ ืึทื– ื“ื™ ืคึผืœืึทืŸ ืคื•ืŸ ื“ื™ Go ืฉืคึผืจืึทืš ืื™ื– ืฉืœืขื›ื˜ ืคึฟืึทืจ ืงืœื•ื’ ืคึผืจืึธื•ื’ืจืึทืžืขืจื–.

ื“ื™ื–ื™ื™ื ื“ ืคึฟืึทืจ ืฉื•ื•ืึทืš ืคึผืจืึธื•ื’ืจืึทืžืขืจื–?

ื’ื™ื™ืŸ ืื™ื– ื–ื™ื™ืขืจ ื’ืจื™ื ื’ ืฆื• ืœืขืจื ืขืŸ, ืึทื–ื•ื™ ื’ืจื™ื ื’ ืึทื– ื“ื™ ื”ืงื“ืžื” ื’ืขื ื•ืžืขืŸ ืžื™ืจ ืื™ื™ืŸ ืึธื•ื•ื ื˜, ื ืึธืš ื•ื•ืึธืก ืื™ืš ืงืขืŸ ืฉื•ื™ืŸ ืงืึธื“ ืคึผืจืึธื“ื•ืงื˜ื™ื•ื•. ื“ืขืจ ื‘ื•ืš ืื™ืš ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ืœืขืจื ืขืŸ ื’ื™ื™ืŸ ืื™ื– ื’ืขืจื•ืคืŸ ืึท ื”ืงื“ืžื” ืฆื• ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืื™ืŸ Go (ืื™ื‘ืขืจื–ืขืฆื•ื ื’), ืขืก ืื™ื– ื‘ื ื™ืžืฆื ืึธื ืœื™ื™ืŸ. ื“ืขืจ ื‘ื•ืš, ื•ื•ื™ ื“ื™ Go ืžืงื•ืจ ืงืึธื“ ื–ื™ืš, ืื™ื– ื’ืจื™ื ื’ ืฆื• ืœื™ื™ืขื ืขืŸ, ื”ืื˜ ื’ื•ื˜ ืงืึธื“ ื‘ื™ื™ืฉืคื™ืœืŸ, ืื•ืŸ ื›ึผื•ืœืœ ื•ื•ืขื’ืŸ 150 ื‘ืœืขื˜ืขืจ ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื™ื™ืขื ืขืŸ ืื™ืŸ ืื™ื™ืŸ ื’ื™ื™ืŸ. ื“ื™ ืคึผืึทืฉื˜ืขืก ืื™ื– ืจืขืคืจืขืฉื™ื ื’ ืื™ืŸ ืขืจืฉื˜ืขืจ, ืกืคึผืขืฆื™ืขืœ ืื™ืŸ ืึท ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ื•ื•ืขืœื˜ ืึธื ื’ืขืคื™ืœื˜ ืžื™ื˜ ืื™ื‘ืขืจ-ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ื˜ืขื›ื ืึธืœืึธื’ื™ืข. ืื‘ืขืจ ืฆื•ื ืกื•ืฃ, ื’ื™ื›ืขืจ ืึธื“ืขืจ ืฉืคึผืขื˜ืขืจ ืงื•ืžื˜ ื“ืขืจ ื’ืขื“ืึทื ืง: "ืื™ื– ื“ืึธืก ื˜ืึทืงืข ืึทื–ื•ื™?"

Google ืงืœื™ื™ืžื– ืึทื– ื“ื™ ืคึผืึทืฉื˜ืขืก ืคื•ืŸ Go ืื™ื– ื–ื™ื™ืŸ ืกืขืœื™ื ื’ ืคื•ื ื˜ ืื•ืŸ ื“ื™ ืฉืคึผืจืึทืš ืื™ื– ื“ื™ื–ื™ื™ื ื“ ืคึฟืึทืจ ืžืึทืงืกื™ืžื•ื ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ื™ื˜ื™ ืื™ืŸ ื’ืจื•ื™ืก ื˜ื™ืžื–, ืึธื‘ืขืจ ืื™ืš ืฆื•ื•ื™ื™ืคืœ ืขืก. ืขืก ื–ืขื ืขืŸ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ืึธื“ืขืจ ืคืขืœื ื“ื™ืง ืึธื“ืขืจ ืึธื•ื•ื•ืขืจื“ื™ ื“ื™ื˜ื™ื™ืœื“. ืื•ืŸ ืึทืœืข ื•ื•ื™ื™ึทืœ ืคื•ืŸ ืึท ืžืึทื ื’ืœ ืคื•ืŸ ืฆื•ื˜ืจื•ื™ ืื™ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก, ืžื™ื˜ ื“ื™ ื”ืึทืฉืึธืจืข ืึทื– ื–ื™ื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื‘ื™ื›ื•ืœืช ืฆื• ื˜ืึธืŸ ืขืคึผืขืก ืจืขื›ื˜. ื“ืขืจ ืคืึทืจืœืึทื ื’ ืคึฟืึทืจ ืคึผืึทืฉื˜ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื‘ืึทื•ื•ื•ืกื˜ื–ื™ื ื™ืง ื‘ืึทืฉืœื•ืก ืคื•ืŸ ื“ื™ ื“ื™ื–ื™ื™ื ืขืจื– ืคื•ืŸ ื“ื™ ืฉืคึผืจืึทืš, ืื•ืŸ ืื™ืŸ ืกื“ืจ ืฆื• ื’ืึธืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ืึธืก ืขืก ืื™ื– ื“ืืจืฃ, ืžื™ืจ ืžื•ื–ืŸ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ืžืึธื•ื˜ืึทื•ื•ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืื•ืŸ ื•ื•ืึธืก ื–ื™ื™ ื–ืขื ืขืŸ ื˜ืจื™ื™ื ื’ ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ืื™ืŸ Go.

ืึทื–ื•ื™ ืคืืจื•ื•ืืก ืื™ื– ืขืก ื’ืขืžืื›ื˜ ืึทื–ื•ื™ ืคึผืฉื•ื˜? ื“ืึธ ื–ืขื ืขืŸ ืึท ืคึผืึธืจ ืคื•ืŸ ืงื•ื•ืึธื˜ืขืก ืจืึธื‘ ืคึผื™ืงืข (ืึทืคึผืคึผืจืึธืงืก.: ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืงืึธ-ืงืจื™ื™ื™ื˜ืขืจื– ืคื•ืŸ ื“ื™ Go ืฉืคึผืจืึทืš):

ื“ืขืจ ืฉืœื™ืกืœ ืคื•ื ื˜ ื“ืึธ ืื™ื– ืึทื– ืื•ื ื“ื–ืขืจ ืคึผืจืึธื•ื’ืจืึทืžืขืจื– (ืึทืคึผืคึผืจืึธืงืก.: ื’ื•ื’ืœืขืจืก) ื–ืขื ืขืŸ ื ื™ืฉื˜ ืจื™ืกืขืจื˜ืฉืขืจื–. ื–ื™ื™ ื–ืขื ืขืŸ, ื•ื•ื™ ืึท ื”ืขืจืฉืŸ, ื’ืึทื ืฅ ื™ื•ื ื’, ืงื•ืžืขืŸ ืฆื• ืื•ื ื“ื– ื ืึธืš ืœืขืจื ืขืŸ, ื˜ืึธืžืขืจ ื–ื™ื™ ื’ืขืœืขืจื ื˜ ื“ื–ืฉืึทื•ื•ืึท, ืึธื“ืขืจ C/C++, ืึธื“ืขืจ ืคึผื™ื˜ื”ืึธืŸ. ื–ื™ื™ ืงืขื ืขืŸ ื ื™ืฉื˜ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืึท ื’ืจื•ื™ืก ืฉืคึผืจืึทืš, ืึธื‘ืขืจ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ืžื™ืจ ื•ื•ืขืœืŸ ื–ื™ื™ ืฆื• ืžืึทื›ืŸ ื’ื•ื˜ ื•ื•ื™ื™ื›ื•ื•ืืจื’. ื“ืขืจืคึฟืึทืจ ื–ืึธืœ ื–ื™ื™ืขืจ ืฉืคึผืจืึทืš ื–ื™ื™ืŸ ื’ืจื™ื ื’ ืคึฟืึทืจ ื–ื™ื™ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืื•ืŸ ืœืขืจื ืขืŸ.
 
ืขืจ ื–ืึธืœ ื–ื™ื™ืŸ ื‘ืึทืงืึทื ื˜, ื‘ืขืขืจืขืš ืขื ืœืขืš ืฆื• ืกื™. ืคึผืจืึธื’ืจืึทืžืžืขืจืก ืืจื‘ืขื˜ืŸ ืื™ืŸ Google ืึธื ื”ื™ื™ื‘ืŸ ื–ื™ื™ืขืจ ืงืึทืจื™ืขืจืข ืคืจื™ ืื•ืŸ ื–ืขื ืขืŸ ืžืขืจืกื˜ื ืก ื‘ืึทืงืึทื ื˜ ืžื™ื˜ ืคึผืจืึทืกื™ื“ื–ืฉืขืจืึทืœ ืฉืคึผืจืึทื›ืŸ, ืกืคึผืขืฆื™ืขืœ ื“ื™ C ืžืฉืคึผื—ื”. ื“ื™ ืคืึธื“ืขืจื•ื ื’ ืคึฟืึทืจ ืฉื ืขืœ ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ืึทื˜ื™ ืื™ืŸ ืึท ื ื™ื™ึทืข ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš ืžื™ื˜ืœ ืึทื– ื“ื™ ืฉืคึผืจืึทืš ื–ืึธืœ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืฆื• ืจืึทื“ื™ืงืึทืœ.

ื•ื•ืืก? ืึทื–ื•ื™ ืจืึธื‘ ืคึผื™ืงืข ืื™ื– ื‘ื™ื™ืกื™ืงืœื™ ื’ืขื–ืื’ื˜ ืึทื– ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื‘ื™ื™ Google ื–ืขื ืขืŸ ื ื™ืฉื˜ ืึทื–ื•ื™ ื’ื•ื˜, ืึทื– ืก ื•ื•ืึธืก ื–ื™ื™ ื‘ืืฉืืคืŸ ืึท ืฉืคึผืจืึทืš ืคึฟืึทืจ ื™ื“ื™ืึธืฅ (ืึทืคึผืคึผืจืึธืงืก.: ื“ื•ืžื‘ืขื“ ืึทืจืึธืคึผ) ืึทื–ื•ื™ ืึทื– ื–ื™ื™ ื–ืขื ืขืŸ ื‘ื™ื›ื•ืœืช ืฆื• ื˜ืึธืŸ ืขืคึผืขืก. ื•ื•ืึธืก ืคึฟืึทืจ ืึท ืขืจืึทื’ืึทื ื˜ ืงื•ืง ืื•ื™ืฃ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ื—ื‘ืจื™ื? ืื™ืš ื”ืึธื‘ืŸ ืฉื˜ืขื ื“ื™ืง ื’ืขื’ืœื•ื™ื‘ื˜ ืึทื– Google ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื–ืขื ืขืŸ ื›ืึทื ื“ืคึผื™ืงื˜ ืคื•ืŸ ื“ื™ ื”ืขืœืกื˜ืข ืื•ืŸ ื‘ืขืกื˜ืขืจ ืื•ื™ืฃ ื“ืขืจ ืขืจื“. ืึทื•ื•ืึทื“ืข ืงืขื ืขืŸ ื–ื™ื™ ืฉืขืคึผืŸ ืขืคึผืขืก ืžืขืจ ืฉื•ื•ืขืจ?

ืึทืจื˜ืึทืคืึทืงืฅ ืคื•ืŸ ื™ื‘ืขืจื™ืง ืคึผืึทืฉื˜ืขืก

ื–ื™ื™ืŸ ืคึผืฉื•ื˜ ืื™ื– ืึท ื•ื•ืขืจื˜ ืฆื™ืœ ืื™ืŸ ืงื™ื™ืŸ ืคึผืœืึทืŸ, ืื•ืŸ ื˜ืจื™ื™ื ื’ ืฆื• ืžืึทื›ืŸ ืขืคึผืขืก ืคึผืฉื•ื˜ ืื™ื– ืฉื•ื•ืขืจ. ืึธื‘ืขืจ, ื•ื•ืขืŸ ื˜ืจื™ื™ื ื’ ืฆื• ืกืึธืœื•ื•ืข (ืึธื“ืขืจ ืืคื™ืœื• ืื•ื™ืกื“ืจื™ืงืŸ) ืงืึธืžืคึผืœืขืงืก ืคึผืจืึธื‘ืœืขืžืก, ืžืืœ ืึท ืงืึธืžืคึผืœืขืงืก ื’ืขืฆื™ื™ึทื’ ืื™ื– ื“ืืจืฃ. ืงืึทืžืคึผืœืขืงืกื™ื˜ื™ ืื•ืŸ ื™ื ื˜ืจืึทืงืึทืกื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื“ื™ ื‘ืขืกื˜ืขืจ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ ืึท ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš, ืึธื‘ืขืจ ืขืก ืื™ื– ืึท ืžื™ื˜ืœ ืขืจื“ ืื™ืŸ ื•ื•ืึธืก ื“ื™ ืฉืคึผืจืึทืš ืงืขื ืขืŸ ืžืึทื›ืŸ ืขืœืขื’ืึทื ื˜ ืึทื‘ืกื˜ืจืึทืงืฆื™ืขืก ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืจื™ื ื’ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืื•ืŸ ื ื•ืฆืŸ.

ื ื™ื˜ ื–ื™ื™ืขืจ ื™ืงืกืคึผืจืขืกื™ื•ื•

ืจืขื›ื˜ ืฆื• ื“ืขืจ ืคืึทืจืœืึทื ื’ ืคึฟืึทืจ ืคึผืึทืฉื˜ืขืก, Go ืคืขืœืŸ ืงืึทื ืกื˜ืจืึทืงืฉืึทื ื– ื•ื•ืึธืก ื–ืขื ืขืŸ ื‘ืืžืขืจืงื˜ ื•ื•ื™ ืขืคึผืขืก ื ืึทื˜ื™ืจืœืขืš ืื™ืŸ ืื ื“ืขืจืข ืฉืคึผืจืึทื›ืŸ. ื“ืึธืก ืงืขืŸ ื•ื™ืกืงื•ืžืขืŸ ื•ื•ื™ ืึท ื’ื•ื˜ืข ื’ืขื“ืึทื ืง ืื™ืŸ ืขืจืฉื˜ืขืจ, ืึธื‘ืขืจ ืื™ืŸ ืคื™ืจ, ื“ืึธืก ืจืขื–ื•ืœื˜ืึทื˜ ืื™ืŸ ื•ื•ืขืจื‘ืึธื•ืก ืงืึธื“. ื“ื™ ืกื™ื‘ื” ืคึฟืึทืจ ื“ืขื ื–ืึธืœ ื–ื™ื™ืŸ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’ - ืขืก ื“ืึทืจืฃ ื–ื™ื™ืŸ ื’ืจื™ื ื’ ืคึฟืึทืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืฆื• ืœื™ื™ืขื ืขืŸ ื“ื™ ืงืึธื“ ืคื•ืŸ ืื ื“ืขืจืข ืžืขื ื˜ืฉืŸ, ืึธื‘ืขืจ ืื™ืŸ ืคืึทืงื˜ ื“ื™ ืกื™ืžืคึผืœืึทืคื™ืงื™ื™ืฉืึทื ื– ืฉืึทื˜ืŸ ื‘ืœื•ื™ื– ื“ื™ ืœื™ื™ืขื ืขืŸ. ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ืึทื‘ืจื™ื•ื•ื™ื™ื™ืฉืึทื ื– ืื™ืŸ Go: ืึธื“ืขืจ ืึท ืคึผืœืึทืฅ ืึธื“ืขืจ ื’ืึธืจื ื™ืฉื˜.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืึท ืงืึทื ืกืึธื•ืœ ื ื•ืฆืŸ ื•ื•ืึธืก ืœื™ื™ืขื ื˜ ืกื˜ื“ื™ืŸ ืึธื“ืขืจ ืึท ื˜ืขืงืข ืคึฟื•ืŸ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืึทืจื’ื•ืžืขื ื˜ืŸ ื•ื•ืึธืœื˜ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก:

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);
    }
}

ืื•ืŸ ื•ื•ืขืจ ืื™ื– ืื™ืฆื˜ ืžืขืจ ืœื™ื™ื ืขื•ื•ื“ื™ืง? ืื™ืš ื•ื•ืขืœ ื’ืขื‘ืŸ ืžื™ื™ืŸ ืฉื˜ื™ืžืข ืฆื• ื“. ื–ื™ื™ืŸ ืงืึธื“ ืื™ื– ืคื™ืœ ืžืขืจ ืœื™ื™ื ืขื•ื•ื“ื™ืง ื•ื•ื™ื™ึทืœ ืขืจ ื‘ืืฉืจื™ื™ื‘ื˜ ื“ื™ ืึทืงืฉืึทื ื– ืžืขืจ ืงืœืืจ. ื“ ื ื™ืฆื˜ ืคื™ืœ ืžืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ืงืึทื ืกืขืคึผืก (ืึทืคึผืคึผืจืึธืงืก.: ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืคึฟื•ื ืงืฆื™ืข ืจื•ืคืŸ ะธ ื˜ืขืžืคึผืœืึทื˜ืขืก) ื•ื•ื™ ืื™ืŸ ื“ื™ 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))
}

ืื•ืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ื˜ื•ื˜ ื ื™ืฉื˜ ืืคื™ืœื• ืึทืจื‘ืขื˜ ืคึฟืึทืจ ื’ืขื—ืชืžืขื˜ ื˜ื™ื™ืคึผืก. ื“ืขืจ ืฆื•ื’ืึทื ื’ ื’ืึธืจ ื•ื•ื™ื™ืึทืœื™ื™ืฅ ื“ืขื ืคึผืจื™ื ืฆื™ืคึผ ืคื•ืŸ ื ื™ืฉื˜ ืจื™ืคึผื™ื˜ื™ื ื’ ื–ื™ืš (ื˜ืจื•ืงืŸ), ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืžืขืจืกื˜ ื‘ืึทืจื™ืžื˜ ืื•ืŸ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’ ืคึผืจื™ื ืกืึทืคึผืึทืœื–, ื™ื’ื ืึธืจื™ื ื’ ื•ื•ืึธืก ืื™ื– ื“ืขืจ ืžืงื•ืจ ืคื•ืŸ ืคื™ืœืข ืขืจืจืึธืจืก. ืคืืจื•ื•ืืก ื˜ื•ื˜ ื’ืึธ ื“ืึธืก? ื“ืึธืก ืื™ื– ืึท ืฉืจืขืงืœืขืš ืึทืกืคึผืขืงื˜ ืคื•ืŸ ืฉืคึผืจืึทืš.

ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ ืื•ื™ืฃ 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 (ืึทืคึผืคึผืจืึธืงืก.: ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืื™ื‘ืขืจื–ืขืฆื•ื ื’, ืื™ืš ื•ื•ืขื˜ ื–ื™ื™ืŸ ืฆื•ืคืจื™ื“ืŸ ืื•ื™ื‘ ืื™ืจ ื”ืขืœืคึฟืŸ ืžื™ื˜ ื“ืขื). ื ื•, ืื•ื™ื‘ ืขืก ืื™ื– ื™ื“ื™ืึทืžืึทื˜ื™ืง, ืื™ืš ื•ื•ืึธืœื˜ ื”ืึทืกืŸ ืฆื• ื–ืขืŸ ืึท ื ื™ื˜-ื™ื“ื™ืึทืžืึทื˜ื™ืง ื‘ื™ื™ึทืฉืคึผื™ืœ. ื‘ืึทื ื™ืฅ interface{} - ืึท ืคืึทืจืก, ืื•ืŸ ืื™ืŸ ื“ืขืจ ืฉืคึผืจืึทืš ืขืก ืื™ื– ื“ืืจืฃ ื‘ืœื•ื™ื– ืฆื• ื‘ื™ื™ืคึผืึทืก ื˜ื™ื™ืคึผื™ื ื’. ื“ืึธืก ืื™ื– ืึท ืœื™ื™ื“ื™ืง ืฆื•ื‘ื™ื ื“ ืื•ืŸ ืึทืœืข ื˜ื™ื™ืคึผืก ื™ื ืกื˜ืจื•ืžืขื ื˜ ืขืก, ืึทืœืึทื•ื™ื ื’ ื’ืึทื ืฅ ืคืจื™ื™ื”ื™ื™ื˜ ืคึฟืึทืจ ืึทืœืขืžืขืŸ. ื“ืขืจ ื ื•ืกื— ืคื•ืŸ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืื™ื– ืฉืจืขืงืœืขืš ืžื™ืขืก, ืื•ืŸ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืึทืœืข. ืึทืงืจืึธื‘ืึทื˜ื™ืง ืคื™ืฅ ื•ื•ื™ ื“ื™ ื“ืึทืจืคืŸ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืจื•ื ื˜ื™ืžืข ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’. ืืคื™ืœื• ืจืึธื‘ ืคึผื™ืงืข ื”ืื˜ ื ื™ื˜ ืœื™ื‘ ืžืขื ื˜ืฉืŸ ื•ื•ืึธืก ื–ื™ื“ืœืขืŸ ื“ืขื, ื•ื•ื™ ืขืจ ื“ืขืจืžืื ื˜ ืื™ืŸ ืื™ื™ื ืขืจ ืคื•ืŸ ื–ื™ื™ืŸ ืจื™ืคึผืึธืจืฅ.

ื“ืึธืก ืื™ื– ืึท ืฉื˜ืึทืจืง ื’ืขืฆื™ื™ึทื’ ื•ื•ืึธืก ื–ืึธืœ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืžื™ื˜ ื•ื•ืึธืจืขื ืขืŸ. ืขืก ื–ืึธืœ ื–ื™ื™ืŸ ืึทื•ื•ื•ื™ื“ืึทื“ ืกื™ื™ึทื“ืŸ ืฉื˜ืจืขื ื’ ื ื™ื™ื˜ื™ืง.

ืื™ืš ื•ื•ืึธืœื˜ ื ืขืžืขืŸ ื“ ื˜ืขืžืคึผืœืึทื˜ืขืก ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ื“ืขื ื•ืžื–ื™ืŸ. ื•ื•ื™ ืงืขืŸ ืžืขืŸ ื“ืืก ื–ืื’ืŸ interface{} ืžืขืจ ืœื™ื™ื ืขื•ื•ื“ื™ืง ืึธื“ืขืจ ืืคื™ืœื• ื˜ื™ืคึผ ื–ื™ื›ืขืจ?

ื“ื™ ื•ื•ืึธืขืก ืคื•ืŸ ืึธืคืขื ื’ื™ืงื™ื™ึทื˜ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’

Go ื”ืื˜ ืึท ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ื“ืขืคึผืขื ื“ืขื ืกื™ ืกื™ืกื˜ืขื ื’ืขื‘ื•ื™ื˜ ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ ืคืึธืœืงืก ื”ืึธืกื˜ื™ื ื’ ืคึผืจืึทื•ื•ื™ื™ื“ืขืจื– ื•ื•ืงืก. ื“ื™ ืžื›ืฉื™ืจื™ื ื•ื•ืึธืก ืงื•ืžืขืŸ ืžื™ื˜ Go ื•ื•ื™ืกืŸ ื•ื•ืขื’ืŸ ื“ื™ ืกืขืจื•ื•ื™ืกืขืก ืื•ืŸ ืงืขื ืขืŸ ืืจืืคืงืืคื™ืข, ื‘ื•ื™ืขืŸ ืื•ืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ืงืึธื“ ืคึฟื•ืŸ ื–ื™ื™ ืื™ืŸ ืื™ื™ืŸ ืงืœืึทืคึผ. ื›ืึธื˜ืฉ ื“ืึธืก ืื™ื– ื’ืจื•ื™ืก, ืขืก ืื™ื– ืึท ื”ื•ื™ืคึผื˜ ืคืœืึธ ืžื™ื˜ ื•ื•ืขืจืกื™ืข! ื™ืึธ, ืขืก ืื™ื– ืืžืช ืึทื– ืื™ืจ ืงืขื ืขืŸ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืžืงื•ืจ ืงืึธื“ ืคึฟื•ืŸ ืกืขืจื•ื•ื™ืกืขืก ื•ื•ื™ ื’ื™ื˜ื”ื•ื‘ ืึธื“ืขืจ ื‘ื™ื˜ื‘ื•ืงืงืขื˜ ืžื™ื˜ Go ืžื›ืฉื™ืจื™ื, ืึธื‘ืขืจ ืื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ื•ื•ืขืจืกื™ืข. ืื•ืŸ ื•ื•ื™ื“ืขืจ ืคึผืึทืฉื˜ืขืก ืื™ืŸ ื“ื™ ืงืึธืกื˜ ืคื•ืŸ ื ื•ืฆื™ืงื™ื™ื˜. ืื™ืš ื‘ื™ืŸ ื ื™ืฉื˜ ื‘ื™ื›ื•ืœืช ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ืœืึธื’ื™ืง ืคื•ืŸ ืึทื–ืึท ืึท ื‘ืึทืฉืœื•ืก.

ื ืึธืš ืึทืกืงื™ื ื’ ืคึฟืจืื’ืŸ ื•ื•ืขื’ืŸ ืึท ืœื™ื™ื–ื•ื ื’ ืฆื• ื“ืขื ืคึผืจืึธื‘ืœืขื, ื“ื™ Go ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืžืึทื ืฉืึทืคึฟื˜ ื‘ืืฉืืคืŸ ืคืึธืจื•ื ืคืึธื“ืขื, ื•ื•ืึธืก ืึทื•ื˜ืœื™ื™ื ื– ื•ื•ื™ ื–ื™ื™ ื–ืขื ืขืŸ ื’ืขื’ืื ื’ืขืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืึทืจื•ื ื“ืขื ืึทืจื•ื™ืกื’ืขื‘ืŸ. ื–ื™ื™ืขืจ ืจืขืงืึธืžืขื ื“ืึทืฆื™ืข ืื™ื– ื’ืขื•ื•ืขืŸ ืฆื• ื ืึธื›ืžืึทื›ืŸ ื“ื™ ื’ืื ืฆืข ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื™ืŸ ื“ื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜ ืื™ื™ืŸ ื˜ืึธื’ ืื•ืŸ ืœืึธื–ืŸ ืขืก "ื•ื•ื™ ืื™ื–." ื•ื•ืึธืก ื“ื™ ื’ืขื ืขื ื–ืขื ืขืŸ ื–ื™ื™ ื˜ืจืื›ื˜ืŸ? ืžื™ืจ ื”ืึธื‘ืŸ ืึทืžื™ื™ื–ื™ื ื’ ื•ื•ืขืจืกื™ืข ืงืึธื ื˜ืจืึธืœ ืกื™ืกื˜ืขืžืขืŸ ืžื™ื˜ ื’ืจื•ื™ืก ื˜ืึทื’ื™ื ื’ ืื•ืŸ ื•ื•ืขืจืกื™ืข ืฉื˜ื™ืฆืŸ ื•ื•ืึธืก ื“ื™ Go ืงืจื™ื™ื™ื˜ืขืจื– ืื™ื’ื ืึธืจื™ืจืŸ ืื•ืŸ ื ืึธืจ ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืžืงื•ืจ ืงืึธื“.

ืงื•ืœื˜ื•ืจ ื‘ืึทื’ืึทื–ืฉ ืคื•ืŸ ืฉื™

ืื™ืŸ ืžื™ื™ืŸ ืžื™ื™ื ื•ื ื’, Go ืื™ื– ื“ืขื•ื•ืขืœืึธืคึผืขื“ ื“ื•ืจืš ืžืขื ื˜ืฉืŸ ื•ื•ืึธืก ื”ืึธื‘ืŸ ื’ืขื•ื•ื™ื™ื ื˜ C ืึทืœืข ื–ื™ื™ืขืจ ืœืขื‘ืŸ ืื•ืŸ ื“ื•ืจืš ื“ื™ ื•ื•ืึธืก ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ืขืคึผืขืก ื ื™ื™ึท. ื“ื™ ืฉืคึผืจืึทืš ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื™ืกืงืจื™ื™ื‘ื“ ื•ื•ื™ C ืžื™ื˜ ืขืงืกื˜ืจืข ื•ื•ื™ืœื– (ืึธืจื™ื’.: ื˜ืจื™ื™ื ื™ื ื’ ื•ื•ื™ืœื–). ื ื™ืฉื˜ื ืงื™ื™ืŸ ื ืฒึทืข ื’ืขื“ืึทื ืงืขืŸ ื“ืขืจื™ืŸ, ืึทื—ื•ืฅ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืคึผืึทืจืึทืœืขืœื™ื–ื (ื•ื•ืึธืก, ืื’ื‘, ืื™ื– ื•ื•ื•ื ื“ืขืจืœืขืš) ืื•ืŸ ื“ืึธืก ืื™ื– ืึท ืฉืึธื“. ืื™ืจ ื”ืึธื˜ ืื•ื™ืกื’ืขืฆื™ื™ื›ื ื˜ืข ืคึผืึทืจืึทืœืขืœื™ื–ื ืื™ืŸ ืึท ืงื•ื™ื ื ื™ืฆืœืขืš, ืœืึธืืขืจ ืฉืคึผืจืึทืš.

ืืŸ ืื ื“ืขืจ ืงืจื™ืงื™ื ื’ ืคึผืจืึธื‘ืœืขื ืื™ื– ืึทื– Go ืื™ื– ืึท ืคึผืจืึทืกื™ื“ื–ืฉืขืจืึทืœ ืฉืคึผืจืึทืš (ื•ื•ื™ ื“ื™ ืฉื˜ื™ืœ ื’ืจื•ื™ืœ ืคื•ืŸ C). ืื™ืจ ืขื ื“ื™ืงืŸ ืฉืจื™ื™ื‘ืŸ ืงืึธื“ ืื™ืŸ ืึท ืคึผืจืึทืกื™ื“ื–ืฉืขืจืึทืœ ื ื•ืกื— ื•ื•ืึธืก ืคื™ืœื– ืึทืจื˜ืฉืึทื™ืง ืื•ืŸ ืึทื•ื˜ื“ื™ื™ื˜ื™ื“. ืื™ืš ื•ื•ื™ืกืŸ ืึทื– ืึทื‘ื“ื–ืฉืขืงื˜ ืึธืจื™ืขื ื˜ื™ื“ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืื™ื– ื ื™ืฉื˜ ืึท ื–ื™ืœื‘ืขืจ ืงื•ื™ืœ, ืึธื‘ืขืจ ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื’ืจื•ื™ืก ืฆื• ืงืขื ืขืŸ ืฆื• ืึทื‘ืกื˜ืจืึทืงื˜ ื“ื™ ื“ืขื˜ืึทื™ืœืก ืื™ืŸ ื˜ื™ื™ืคึผืก ืื•ืŸ ืฆื•ืฉื˜ืขืœืŸ ืขื ืงืึทืคึผืกื•ืœืึทื˜ื™ืึธืŸ.

ืคึผืึทืฉื˜ืขืก ืคึฟืึทืจ ื“ื™ื™ืŸ ืื™ื™ื’ืŸ ื ื•ืฅ

Go ืื™ื– ื“ื™ื–ื™ื™ื ื“ ืฆื• ื–ื™ื™ืŸ ืคึผืฉื•ื˜ ืื•ืŸ ืขืก ืื™ื– ื’ืขืจืึธื˜ืŸ ืื™ืŸ ื“ืขื ืฆื™ืœ. ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ืคึฟืึทืจ ืฉื•ื•ืึทืš ืคึผืจืึธื•ื’ืจืึทืžืขืจื–, ื ื™ืฆืŸ ืึทืŸ ืึทืœื˜ ืฉืคึผืจืึทืš ื•ื•ื™ ืึท ืžื•ืกื˜ืขืจ. ืขืก ืงื•ืžื˜ ื’ืึทื ืฅ ืžื™ื˜ ืคึผืฉื•ื˜ ืžื›ืฉื™ืจื™ื ืฆื• ื˜ืึธืŸ ืคึผืฉื•ื˜ ื˜ื™ื ื’ื–. ืขืก ืื™ื– ื’ืจื™ื ื’ ืฆื• ืœื™ื™ืขื ืขืŸ ืื•ืŸ ื’ืจื™ื ื’ ืฆื• ื ื•ืฆืŸ.

ืขืก ืื™ื– ื’ืึธืจ ื•ื•ืขืจื‘ืึธื•ืก, ืึทื ื™ืžืคึผืจืขืกืกื™ื•ื• ืื•ืŸ ืฉืœืขื›ื˜ ืคึฟืึทืจ ืงืœื•ื’ ืคึผืจืึธื•ื’ืจืึทืžืขืจื–.

ื“ืึทื ืง ืžืขืจืกื™ื ื•ื•ืึทืœื“ ืคึฟืึทืจ ืจืขื“ืืงืฆื™ืข

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’