{"id":268188,"date":"2015-11-13T18:54:03","date_gmt":"2015-11-13T15:54:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=268188"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=268188","title":{"rendered":"\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0439 \u041e\u041e\u041f \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Go"},"content":{"rendered":"<p>       \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u043e\u043f\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u0433\u043b\u0430\u0437\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f <a href=\"http:\/\/habrahabr.ru\/post\/263575\/\">\u0441\u0442\u0430\u0442\u044c\u044f \u0441 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c<\/a> \u043e \u044f\u0437\u044b\u043a\u0435 Haskell. \u0410\u0432\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u043c\u044b\u0441\u043b\u044c\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u0440\u0435\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0442\u0438\u043f\u0438\u0447\u043d\u0443\u044e \u041e\u041e\u041f \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u043e \u0432 \u0425\u0430\u0441\u043a\u0435\u043b\u0435. \u041f\u043e\u043c\u0438\u043c\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u041e\u041e\u041f \u2014 \u044d\u0442\u043e \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u00ab\u043a\u043b\u0430\u0441\u0441\u044b\u00bb \u0438 \u00ab\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u00bb, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044f\u0437\u044b\u043a\u043e\u043c. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \u0440\u0435\u0448\u0438\u0442\u044c \u0442\u0443 \u0436\u0435 \u0441\u0430\u043c\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u043d\u043e \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Go, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u041e\u041e\u041f \u0442\u043e\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043d\u0435\u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u0417\u0430\u0434\u0430\u0447\u0430<\/h4>\n<p>  \u0418\u0442\u0430\u043a, \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a: \u0435\u0441\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b(\u0444\u0438\u0433\u0443\u0440\u044b), \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438, \u043d\u043e \u043d\u0430\u0434 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0438\u0433\u0443\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043c\u0435\u0442\u044c \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0435\u0431\u0435 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0432 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u044b\u0432\u043e\u0434, \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u2014 \u0432 stdout. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u0445.<\/p>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430 \u0438 \u043a\u0440\u0443\u0433\u0430, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u043c:  <\/p>\n<blockquote><p>paint rectangle, Rect {left = 10, top = 20, right = 600, bottom = 400}<br \/>  paint circle, radius=150 and centre=(50,300)  <\/p><\/blockquote>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a.<\/p>\n<h4>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h4>\n<p>  <\/p>\n<h5>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430<\/h5>\n<p>  \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0433\u043e \u2014 \u0441 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u0438 \u0438\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432. \u0417\u0430 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 Go \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 Rectangle \u0438 Circle:  <\/p>\n<pre><code class=\"go\">type Rectangle struct { \tLeft, Right, Top, Bottom int64 }  type Circle struct { \tX, Y, Radius int64 } <\/code><\/pre>\n<p>  \u0412 Go \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u2014 \u043b\u0443\u0447\u0448\u0435 \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e\u043b\u0435 \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u043d\u043e \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0422\u0438\u043f int64 \u0432\u044b\u0431\u0440\u0430\u043d \u043a\u0430\u043a \u0431\u0430\u0437\u043e\u0432\u044b\u0439. \u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u0435\u0441\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u2014 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0442\u0438\u043f \u0443\u0434\u0430\u0447\u043d\u0435\u0439, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043a\u0430\u0436\u0435\u043c uint8, \u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u044d\u0442\u043e \u0437\u043b\u043e. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e, \u0441\u043c\u0435\u043b\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c int64.<\/p>\n<p>  \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0443\u043a\u0432\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0430\u043c \u043d\u0435 \u0432\u0430\u0436\u043d\u0430 (\u0432 Go \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0443\u043a\u0432\u044b \u2014 \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433 public, \u0441 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u2014 private).<\/p>\n<h5>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043c\u0435\u0442\u044c \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0435\u0431\u0435 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0438 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430. \u041a\u0430\u043a \u0436\u0435 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0432 Go, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 \u00ab\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u041e\u041e\u041f\u00bb?<\/p>\n<p>  \u0422\u0443\u0442 \u0432 Go \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u0430\u0434\u0430\u0442\u044c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u044f\u0437\u044b\u043a\u0435 \u043e\u0447\u0435\u043d\u044c \u0447\u0435\u0442\u043a\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u00ab\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u00bb \u0438 \u00ab\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u00bb. <b>\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u2014 \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b.<\/b> \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043c\u043e\u0449\u043d\u044b\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0442 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u043e\u0442\u0432\u0435\u0442, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441 \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438:  <\/p>\n<pre><code class=\"go\">type Figure interface { \tSay() string \tSquare() int64 } <\/code><\/pre>\n<p>  \u0412\u044b\u0431\u043e\u0440 \u0438\u043c\u0435\u043d\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (Figure) \u0442\u0443\u0442 \u043f\u0440\u043e\u0434\u0438\u043a\u0442\u043e\u0432\u0430\u043d \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0438 \u0437\u0430\u0434\u0430\u0447\u0435\u0439, \u043d\u043e <a href=\"https:\/\/golang.org\/doc\/effective_go.html#interface-names\">\u043e\u0431\u044b\u0447\u043d\u043e \u0432 Go \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b<\/a>, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0441 \u043e\u0434\u043d\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c, \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0441 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u043e\u043c -er \u2014 Reader, Painter, Stringer \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041f\u043e \u0438\u0434\u0435\u0435, \u0438\u043c\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u041d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Figure \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u00ab\u0444\u0438\u0433\u0443\u0440\u044b\u00bb \u0438\u043b\u0438 \u00ab\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u00bb.<\/p>\n<h5>\u041c\u0435\u0442\u043e\u0434\u044b<\/h5>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u0447\u0442\u043e\u0431\u044b \u0442\u0438\u043f\u044b Rectangle \u0438 Circle \u0441\u0442\u0430\u043b\u0438 \u00ab\u0444\u0438\u0433\u0443\u0440\u0430\u043c\u0438\u00bb, \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 Figure, \u0442\u043e\u0435\u0441\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043c\u0435\u0442\u043e\u0434\u044b Say \u0438 Square. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0445 \u043d\u0430\u043f\u0438\u0448\u0435\u043c:  <\/p>\n<pre><code class=\"go\">func (r Rectangle) Say() string { \treturn fmt.Sprintf(&quot;rectangle, Rect {left=%d,top=%d,right=%d,bottom=%d)&quot;, r.Left, r.Top, r.Right, r.Bottom) }  func (r Rectangle) Square() int64 { \treturn (r.Right - r.Left) * (r.Top - r.Bottom) }  func (c Circle) Say() string { \treturn fmt.Sprintf(&quot;circle, radius=%d and centre=(%d,%d)&quot;, c.Radius, c.X, c.Y) }  func (c Circle) Square() int64 { \treturn (2 * c.Radius) ^ 2 } <\/code><\/pre>\n<p>  \u041d\u0430 \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2014 \u043d\u0430 \u0440\u0435\u0441\u0438\u0432\u0435\u0440 \u043c\u0435\u0442\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c (\u043a\u0430\u043a \u0441\u0435\u0439\u0447\u0430\u0441 \u2014 \u00abc Circle\u00bb), \u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c &quot;(c *Circle)&quot;. \u041e\u0431\u0449\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0442\u0443\u0442 \u0442\u0430\u043a\u043e\u0435 \u2014 \u0435\u0441\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 c \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 Circle \u2014 \u0431\u043e\u043b\u044c\u0448\u0443\u0449\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0430\u044f \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u2014 \u0442\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c. \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u0430.<\/p>\n<p>  \u0411\u043e\u043b\u0435\u0435 \u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u0433\u043e\u0444\u0435\u0440\u044b \u0437\u0430\u043c\u0435\u0442\u044f\u0442, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 Say \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <a href=\"https:\/\/golang.org\/pkg\/fmt\/#Stringer\">Stringer<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043f\u0430\u043a\u0435\u0442\u043e\u043c fmt \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c Say \u0432 Stringer, \u0443\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 Say \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Figure \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 fmt \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430, \u043d\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0442\u0430\u043a, \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u044f\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u0445\u043e\u0436\u0435\u0441\u0442\u0438 \u0441 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c.<\/p>\n<h5>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b<\/h5>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u0441\u0435 \u2014 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 Rectangle \u0438\u043b\u0438 Circle, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 \u0441\u043b\u0430\u0439\u0441\u0435(<a href=\"http:\/\/blog.golang.org\/go-slices-usage-and-internals\">\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432 Go<\/a>) \u0442\u0438\u043f\u0430 []Figure \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439 Figure \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043c\u0435\u0442\u043e\u0434\u044b Say \u0438\u043b\u0438 Square \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u043c\u0438. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"go\">func main() { \tfigures := []Figure{ \t\tNewRectangle(10, 20, 600, 400), \t\tNewCircle(50, 300, 150), \t} \tfor _, figure := range figures { \t\tfmt.Println(figure.Say()) \t} }  func NewRectangle(left, top, right, bottom int64) *Rectangle { \treturn &Rectangle{ \t\tLeft:   left, \t\tTop:    top, \t\tRight:  right, \t\tBottom: bottom, \t} }  func NewCircle(x, y, radius int64) *Circle { \treturn &Circle{ \t\tX:      x, \t\tY:      y, \t\tRadius: radius, \t} } <\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434\u044b NewRectangle \u0438 NewCircle \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044f \u0438\u0445. \u042d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0432 Go, \u0442\u0430\u043a\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u0435\u0449\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0432\u0435\u0449\u0438, \u0442\u043e\u0433\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0430\u043a:   <\/p>\n<pre><code class=\"go\">func NewCircle(x, y, radius int64) (*Circle, error) {...} <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u0441 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u043e\u0439 Must \u0432\u043c\u0435\u0441\u0442\u043e New \u2014 MustCircle(x, y, radius int64) *Circle \u2014 \u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u0442 \u043f\u0430\u043d\u0438\u043a\u0443, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<h5>\u0423\u0433\u043b\u0443\u0431\u043b\u044f\u0435\u043c\u0441\u044f \u0432 \u0442\u0435\u043c\u0443<\/h5>\n<p>  \u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u044b \u043a\u043b\u0430\u0434\u0435\u043c \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u0444\u0438\u0433\u0443\u0440 ([]Figure) \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u043e\u0432 *Rectangle \u0438 *Circle (\u0442\u043e\u0435\u0441\u0442\u044c, \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 Rectangle \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 Circle), \u0445\u043e\u0442\u044f \u043c\u0435\u0442\u043e\u0434\u044b \u043c\u044b \u0442\u0430\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0430 \u043d\u0435 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c (func (c Circle) Say() string). \u041d\u043e \u044d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434, <a href=\"https:\/\/golang.org\/doc\/effective_go.html#pointers_vs_values\">\u0442\u0430\u043a Go \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u0430\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432<\/a>, \u0443\u043f\u0440\u043e\u0449\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c \u0436\u0438\u0437\u043d\u044c \u2014 \u0435\u0441\u043b\u0438 \u0442\u0438\u043f \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0442\u043e \u00ab\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u0442\u0438\u043f\u00bb \u0442\u043e\u0436\u0435 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442. \u0412\u0435\u0434\u044c \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043d\u0435 \u0442\u0430\u043a \u043b\u0438? \u041d\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u00ab\u0432\u044b\u0437\u043e\u0432\u0438 \u043c\u0435\u0442\u043e\u0434\u00bb \u2014 Go \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0441\u0430\u043c. \u0410 \u0432\u043e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u2014 \u0447\u0442\u043e \u0442\u043e\u0436\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u2014 \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u00ab\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0442\u0438\u043f\u00bb, \u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 \u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u0435-\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0432\u0435\u0440\u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 Say \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043f\u043e \u0441\u043b\u0430\u0439\u0441\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 range \u0438 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u043c \u0432\u044b\u0432\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 Say(). \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 Figure \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u00ab\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u00bb \u0442\u0438\u043f\u0435. figure \u0432 \u0446\u0438\u043a\u043b\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0438\u043f\u043e\u043c Figure, \u0438, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u043b\u0438\u0431\u043e Rectangle, \u043b\u0438\u0431\u043e Circle. \u042d\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438, \u0434\u0430\u0436\u0435 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 (interface{}).<\/p>\n<h4>\u0423\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u043c \u043a\u043e\u0434<\/h4>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0430\u0432\u0442\u043e\u0440 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0443, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u00ab\u0437\u0430\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u00bb \u2014 RoundRectangle. \u042d\u0442\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 Rectangle, \u043d\u043e \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u00ab\u0440\u0430\u0434\u0438\u0443\u0441 \u0437\u0430\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f\u00bb. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u0430\u043a-\u0442\u043e \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 Rectangle.<\/p>\n<p>  \u041e\u043f\u044f\u0442\u044c \u0436\u0435, Go \u0434\u0430\u0435\u0442 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0447\u0435\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u00ab\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e\u00bb \u0442\u0443\u0442 \u043d\u0435\u0442. \u0418 \u044d\u0442\u043e\u0442 \u043e\u0442\u0432\u0435\u0442 \u2014 embedding, \u0438\u043b\u0438 \u00ab\u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435\u00bb \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439. \u0412\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"go\">type RoundRectangle struct { \tRectangle \tRoundRadius int64 } <\/code><\/pre>\n<p>  \u041c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f-\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0438\u043f\u0430 Rectangle \u043f\u043b\u044e\u0441 \u043e\u0434\u043d\u043e \u043d\u043e\u0432\u043e\u0435 \u2014 RoundRadius. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, RoundRectangle \u0443\u0436\u0435<b> \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Figure<\/b>, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0433\u043e \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 Rectangle. \u041d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e. \u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442:  <\/p>\n<pre><code class=\"go\">func NewRoundRectangle(left, top, right, bottom, round int64) *RoundRectangle { \treturn &RoundRectangle{ \t\t*NewRectangle(left, top, right, bottom), \t\tround, \t} }  func (r RoundRectangle) Say() string { \treturn fmt.Sprintf(&quot;round rectangle, %s and roundRadius=%d&quot;, r.Rectangle.Say(), r.RoundRadius) } <\/code><\/pre>\n<p>  \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0442\u0438\u043f\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 NewRectangle, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c (\u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Rectangle, \u0430 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 Rectangle), \u0430 \u043c\u0435\u0442\u043e\u0434 Say \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 r.Rectangle.Say(), \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0432\u043e\u0434 \u0431\u044b\u043b \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043a\u0430\u043a \u0438 \u0434\u043b\u044f Rectangle, \u0431\u0435\u0437 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430.<\/p>\n<p>  <a href=\"https:\/\/golang.org\/doc\/effective_go.html#embedding\">\u0412\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u043e\u0432<\/a> (embedding) \u0432 Go \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u044d\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0441\u043b\u0430\u0439\u0441 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432:  <\/p>\n<pre><code class=\"go\">figures := []Figure{ \t\tNewRectangle(10, 20, 600, 400), \t\tNewCircle(50, 300, 150), \t\tNewRoundRectangle(30, 40, 500, 200, 5), } <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u043c\u044b \u043d\u0435 \u0434\u0443\u043c\u0430\u043b\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u043c \u0431\u044b \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u044f\u0437\u044b\u043a\u0430 \u043f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u0440\u044f\u043c\u043e\u043c\u0443 \u0438\u0445 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e, \u043d\u0435 \u0442\u0435\u0440\u044f\u044f \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e.<\/p>\n<h4>\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u043a\u0438<\/h4>\n<p>  \u0425\u043e\u0442\u044f \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c, \u043d\u043e \u043e\u043f\u0438\u0448\u0443 \u043f\u0430\u0440\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0431\u044b \u0434\u0435\u043b\u0430\u043b \u0434\u0430\u043b\u044c\u0448\u0435. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u2014 \u044f \u043d\u0430\u043f\u0438\u0448\u0443 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a\u043e \u0432\u0441\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u0430\u043c, \u0434\u0430\u0436\u0435 \u043a \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u043c. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0438\u0434\u0435\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u043f\u0430\u043a\u0435\u0442\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e go doc, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430, \u0438 \u0432\u043e\u043e\u0431\u0449\u0435, \u044d\u0442\u043e \u043d\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430. \u041d\u043e, \u0435\u0441\u043b\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0442\u043e \u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442. \u041f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0435, \u043d\u043e \u043c\u043d\u0435 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c 5 \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430, \u0437\u0430\u0442\u043e \u0435\u0441\u0442\u044c \u0447\u0443\u0432\u0441\u0442\u0432\u043e \u00ab\u043f\u043e\u043b\u043d\u043e\u0442\u044b\u00bb \u043a\u043e\u0434\u0430, \u0434\u0430 \u0438 \u043b\u0438\u043d\u0442\u0435\u0440\u044b (go vet) \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0442\u043e\u0436\u0435 \u043f\u0440\u0438\u044f\u0442\u043d\u043e.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0440\u0430\u0437\u043d\u0435\u0441\u0442\u0438 \u043a\u043e\u0434 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 main() \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 main.go, \u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430 \u0438 \u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u2014 circle.go, rectangle.go \u0438 roundrectangle.go. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b.<\/p>\n<p>  \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0448\u0442\u0440\u0438\u0445\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0433\u043e\u043d\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/github.com\/alecthomas\/gometalinter\">GoMetaLinter<\/a> \u2014 \u044d\u0442\u043e \u043f\u0430\u043a\u0435\u0442, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0435 \u043b\u0438\u043d\u0442\u0435\u0440\u044b \u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043c\u0435\u044e\u0442 \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u043b\u043e\u0432\u0438\u0442\u044c \u0438 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u0434 \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435, \u0447\u0438\u0449\u0435 \u0438 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0435\u0439. \u0415\u0441\u043b\u0438 gometalinter \u043d\u0435 \u0432\u044b\u0432\u0435\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u043e, \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0438\u0441\u0442.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0443\u0442<\/b><\/p>\n<div class=\"spoiler_text\">main.go:  <\/p>\n<pre><code class=\"go\">package main  import &quot;fmt&quot;  \/\/ Figure describes graphical primitive, which can Say \/\/ own information and return it's Square. type Figure interface { \tSay() string \tSquare() int64 }  func main() { \tfigures := []Figure{ \t\tNewRectangle(10, 20, 600, 400), \t\tNewCircle(50, 300, 150), \t\tNewRoundRectangle(30, 40, 500, 200, 5), \t} \tfor _, figure := range figures { \t\tfmt.Println(figure.Say()) \t} } <\/code><\/pre>\n<p>  rectangle.go:  <\/p>\n<pre><code class=\"go\">package main  import &quot;fmt&quot;  \/\/ Rectangle defines graphical primitive for drawing rectangles. type Rectangle struct { \tLeft, Right, Top, Bottom int64 }  \/\/ NewRectangle inits new Rectangle. func NewRectangle(left, top, right, bottom int64) *Rectangle { \treturn &Rectangle{ \t\tLeft:   left, \t\tTop:    top, \t\tRight:  right, \t\tBottom: bottom, \t} }  \/\/ Say returns rectangle details in special format. Implements Figure. func (r Rectangle) Say() string { \treturn fmt.Sprintf(&quot;rectangle, Rect {left=%d,top=%d,right=%d,bottom=%d)&quot;, r.Left, r.Top, r.Right, r.Bottom) }  \/\/ Square returns square of the rectangle. Implements Figure. func (r Rectangle) Square() int64 { \treturn (r.Right - r.Left) * (r.Top - r.Bottom) } <\/code><\/pre>\n<p>  circle.go:  <\/p>\n<pre><code class=\"go\">package main  import &quot;fmt&quot;  \/\/ Circle defines graphical primitive for drawing circles. type Circle struct { \tX, Y, Radius int64 }  \/\/ NewCircle inits new Circle. func NewCircle(x, y, radius int64) *Circle { \treturn &Circle{ \t\tX:      x, \t\tY:      y, \t\tRadius: radius, \t} }  \/\/ Say returns circle details in special format. Implements Figure. func (c Circle) Say() string { \treturn fmt.Sprintf(&quot;circle, radius=%d and centre=(%d,%d)&quot;, c.Radius, c.X, c.Y) }  \/\/ Square returns square of the circle. Implements Figure. func (c Circle) Square() int64 { \treturn (2 * c.Radius) ^ 2 } <\/code><\/pre>\n<p>  roundrectangle.go:  <\/p>\n<pre><code class=\"go\">package main  import &quot;fmt&quot;  \/\/ RoundRectangle defines graphical primitive for drawing rounded rectangles. type RoundRectangle struct { \tRectangle \tRoundRadius int64 }  \/\/ NewRoundRectangle inits new Round Rectangle and underlying Rectangle. func NewRoundRectangle(left, top, right, bottom, round int64) *RoundRectangle { \treturn &RoundRectangle{ \t\t*NewRectangle(left, top, right, bottom), \t\tround, \t} }  \/\/ Say returns round rectangle details in special format. Implements Figure. func (r RoundRectangle) Say() string { \treturn fmt.Sprintf(&quot;round rectangle, %s and roundRadius=%d&quot;, r.Rectangle.Say(), r.RoundRadius) } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<h4>\u0412\u044b\u0432\u043e\u0434\u044b<\/h4>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0445\u043e\u0434\u043e\u043c \u043c\u044b\u0441\u043b\u0438, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b Go. Go \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u2014 \u043f\u0440\u044f\u043c\u043e\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u0438 \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0442\u0440\u0430\u0442\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f, \u043a\u0430\u043a\u0438\u043c\u0438 \u0431\u044b \u0444\u0438\u0447\u0430\u043c\u0438 \u0440\u0435\u0448\u0438\u0442\u044c \u0442\u0443 \u0438\u043b\u0438 \u0438\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443. \u0415\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0437\u043c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u042d\u043a\u0437\u0438\u0441\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445\u041a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0439, \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0432 \u0434\u0443\u0445\u0435 \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u0438 Unix.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c \u0441\u0442\u0430\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u041e\u041e\u041f \u0431\u0435\u0437 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0435\u0441\u0442\u044c \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/243593\/\">\u043f\u0430\u0440\u0430<\/a> <a href=\"http:\/\/habrahabr.ru\/post\/225907\/\">\u0441\u0442\u0430\u0442\u0435\u0439<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u041e\u041e\u041f \u0432 Go, \u0438 \u0434\u0430\u0436\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u044d\u0441\u043a\u0443\u0440\u0441 \u0432 \u0442\u043e, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u041e\u041e\u041f \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435.<\/p>\n<p>  \u0418, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u044b-\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u043e\u0432\u044b\u0445 \u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u044f\u0437\u044b\u043a\u0430\u0445. \u041c\u043d\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u044b\u043b\u043e \u0436\u0443\u0442\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u00ab\u043f\u043e\u0434\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u00bb \u0437\u0430 \u0445\u043e\u0434\u043e\u043c \u043c\u044b\u0441\u043b\u0438 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0438, \u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u044d\u0442\u043e \u0438\u0437 \u043b\u0443\u0447\u0448\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0438 \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0449\u0438. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0430\u0432\u0442\u043e\u0440\u0443 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 (@KolodeznyDiver).               <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/270849\/\"> http:\/\/habrahabr.ru\/post\/270849\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u043e\u043f\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u0433\u043b\u0430\u0437\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f <a href=\"http:\/\/habrahabr.ru\/post\/263575\/\">\u0441\u0442\u0430\u0442\u044c\u044f \u0441 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c<\/a> \u043e \u044f\u0437\u044b\u043a\u0435 Haskell. \u0410\u0432\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u043c\u044b\u0441\u043b\u044c\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u0440\u0435\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0442\u0438\u043f\u0438\u0447\u043d\u0443\u044e \u041e\u041e\u041f \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u043e \u0432 \u0425\u0430\u0441\u043a\u0435\u043b\u0435. \u041f\u043e\u043c\u0438\u043c\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u041e\u041e\u041f \u2014 \u044d\u0442\u043e \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u00ab\u043a\u043b\u0430\u0441\u0441\u044b\u00bb \u0438 \u00ab\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u00bb, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044f\u0437\u044b\u043a\u043e\u043c. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \u0440\u0435\u0448\u0438\u0442\u044c \u0442\u0443 \u0436\u0435 \u0441\u0430\u043c\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u043d\u043e \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Go, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u041e\u041e\u041f \u0442\u043e\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043d\u0435\u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-268188","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/268188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=268188"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/268188\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=268188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=268188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=268188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}