គំនិត: The Illusion of Simplicity អ្នក អាច ប្រភេទ ឬ នៅលើផ្ទៃ, ការបញ្ជាទាំងនេះមានភាពច្បាស់លាស់: អ្នកចុច Enter ហើយបន្ទាប់មកកូដរបស់អ្នកត្រូវបានកំណត់, ការបណ្តុះបណ្តាល, និង - ពេលវេលា - ការដោះស្រាយ។ ប៉ុន្តែខាងក្រោមនៃភាពងាយស្រួលនេះគឺជាប្រព័ន្ធដែលត្រូវបានរចនាឡើងយ៉ាងហោចណាស់ដែលបានបង្កើនប្រសិទ្ធិភាពដើម្បីធ្វើឱ្យជីវិតរបស់អ្នកជាអ្នកអភិវឌ្ឍន៍ងាយស្រួលនិងមានល្បឿនលឿននិងមានប្រសិទ្ធិភាពសម្រាប់ម៉ាស៊ីន។ go build go run ការយល់ដឹងអំពីរបៀបដែល Go ធ្វើការជាមួយការបង្កើត, ការធ្វើដំណើរ, និងការកាត់បន្ថយកូដគឺមិនមែនជាការសាកលវិទ្យាល័យទេ។ វាត្រូវបានបង្ហាញពីរបៀបដែលការកាត់បន្ថយកាត់បន្ថយគឺយ៉ាងឆាប់រហ័សដូច្នេះរបៀបដែលកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់បន្ថយកាត់ប នៅពេលបច្ចុប្បន្ននេះអ្នកនឹងមានរូបភាពច្បាស់លាស់អំពី: តើធ្វើដូចម្តេចដើម្បីដោះស្រាយបញ្ហានិងរចនាសម្ព័ន្ធកូដរបស់អ្នកទៅក្នុងកញ្ចប់ តើធ្វើដូចម្តេចដើម្បីធ្វើការបណ្តុះបណ្តាលនិងបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះ, ហេតុអ្វីបានជា cache build គឺមានសុវត្ថិភាពដូច្នេះនិង តើធ្វើដូចម្តេចនៅពេលដែលអ្នកចុច Go Build ឬ Go Run? ប្រសិនបើអ្នកមានអារម្មណ៍អំពីហេតុអ្វីដែល Go បានបង្កើត "តែធ្វើការ" ឬហេតុអ្វីដែលអ្នកមានអារម្មណ៍ ប្រព័ន្ធផ្សព្វផ្សាយឌីជីថលគួរឱ្យចាប់អារម្មណ៍យ៉ាងឆាប់រហ័ស, នេះគឺជាការចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចាយ - សម្រាប់មនុស្សនិងម៉ាស៊ីនដូចគ្នា។ go run ម៉ូដែល Go Toolchain នៅលើរូបថតដំបូង, លោក និង ដូច្នេះវាជាការប្រៀបធៀបជាមួយនឹងការប្រៀបធៀបដែលវាជាការប្រៀបធៀបដែលវាជាការប្រៀបធៀបដែលវាជាការប្រៀបធៀបដែលវាជាការប្រៀបធៀបដែលវាជាការប្រៀបធៀបដែលវាជាការប្រៀបធៀបដែលវាជាការប្រៀបធៀបដែលវាជាការប្រៀបធៀបដែលវាជាការប្រៀបធៀបដែលវាជាការប្រៀបធៀប។ ទិន្នន័យទាំងអស់នៃការដោះស្រាយដំណើរការដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយដោះស្រាយ មិនមែនជាមេកានិចនៃការរចនាវា។ go build go run go test same underlying pipeline what happens to the final artifact គំនិតសំខាន់មួយនៃការ internalization គឺថា ប្រព័ន្ធ ប្រតិបត្តិការ iOS និង iOS ប្រព័ន្ធ ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិបត្តិការ iOS ប្រតិ Go builds packages, not individual files ការប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រ កញ្ចប់ក្លាយជាកញ្ចប់ធម្មជាតិសម្រាប់ការកាត់បន្ថយនិងការកាត់បន្ថយ paralel ។ កញ្ចប់តូចដែលមានគោលបំណងមានលក្ខណៈពិសេសក្នុងការកម្រិតខ្ពស់ជាងនៅក្នុងមូលដ្ឋានកូដទូលាយដោយសារតែកំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់។ វគ្គបណ្តុះបណ្តាលនេះគឺមានគំនិតភាពងាយស្រួលប៉ុន្តែមានអត្ថប្រយោជន៍ខ្ពស់: Go បានដឹងយ៉ាងត្រឹមត្រូវអំពីអ្វីដែលត្រូវការកំណត់សម្គាល់និងអ្វីដែលអាចត្រូវបានប្រើឡើងវិញ, ដូច្នេះការកំណត់បណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តាល។ : វាត្រូវបានរចនាឡើងដើម្បីកំណត់, ការបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តាល។ និង វាគឺជាការចាប់ផ្តើមនៃការចាប់ផ្តើមនៃការចាប់ផ្តើមនៃការចាប់ផ្តើមនៃការចាប់ផ្តើមនៃការចាប់ផ្តើមនៃការចាប់ផ្តើមនៃការចាប់ផ្តើម។ smart coordinator go build go run ពី រចនាសម្ព័ន្ធគម្រោង go.mod សូមអរគុណ មុនពេលវេលា Go ត្រូវប្រៀបធៀបជាមួយឯកសារប្រភពរបស់អ្នក, វាមានតម្រូវការដើម្បីរកឃើញអ្វីដើម្បីបង្កើតនិងក្នុងរបៀបដែលវាបានចាប់ផ្តើមជាមួយនឹងប្រព័ន្ធម៉ូឌុលដែលមានមូលដ្ឋាននៅជុំវិញប្រព័ន្ធរបស់អ្នក។ និង ប្រព័ន្ធ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ វាគឺជាដំណោះស្រាយពេញលេញនៃគម្រោងរបស់អ្នក, ជាមួយនឹងកំណែត្រជាក់លាក់សម្រាប់ម៉ូឌុលទាំងអស់។ ដោយការអានឯកសារទាំងនេះ, ឧបករណ៍បម្រើ Go បានដឹងយ៉ាងត្រឹមត្រូវថាសម្រាប់កញ្ចប់ដែលជាផ្នែកមួយនៃការបង្កើតរបស់អ្នកនិងកូដខាងក្រៅដែលត្រូវទាញយកការត្រួតពិនិត្យនិងរួមបញ្ចូល។ go.mod go.sum module graph នៅពេលដែលទាញយកគំនូរម៉ូឌុល Go បានប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀបប្រៀបធៀប ឧបករណ៍បញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជាការបញ្ជា។ go build ចំណុចសំខាន់មួយនៃការធ្វើដំណើរប្រវត្តិសាស្រ្តថ្មីនេះគឺជាលក្ខណៈនៃការ គោលបំណង IN គោលនយោបាយនេះបាននិយាយថាកំណែទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំទំហំ ឧបករណ៍នេះអាចត្រូវបានអនុវត្តនៅពេលវេលា។ ឧបករណ៍នេះត្រូវបានអនុវត្តនៅពេលវេលា។ នេះគឺជាផ្នែកមួយនៃការផ្លាស់ប្តូររបស់ Go ដើម្បីធ្វើឱ្យប្រសិនបើកូដរបស់អ្នកធ្វើឱ្យប្រសិនបើកូដរបស់អ្នកធ្វើឱ្យប្រសិនបើប្រសិនបើកូដរបស់អ្នកធ្វើឱ្យប្រសិនបើប្រសិនបើប្រសិនបើកូដរបស់អ្នកធ្វើឱ្យប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិន go go.mod go នៅពេលបច្ចុប្បន្ននេះបច្ចុប្បន្ននេះបច្ចុប្បន្ននេះបច្ចុប្បន្ននេះមាន : វាត្រូវបានដឹងថាតើវាគឺជាកញ្ចប់ដែលត្រូវកំណត់, ក្នុងកំណត់ដែលវាគឺជាកញ្ចប់ដែលត្រូវកំណត់, និងថាតើវាគឺជាកញ្ចប់ដែលត្រូវកំណត់។ ជាមួយនឹងព័ត៌មាននេះនៅក្នុងដៃវាគឺជាដំណោះស្រាយទៅនឹងដំណោះស្រាយបន្ទាប់: ការកំណត់វាគឺជាកញ្ចប់ដែលត្រូវកំណត់វាគឺជាកញ្ចប់ដែលត្រូវកំណត់វាគឺជាកញ្ចប់ដែលត្រូវកំណត់វាគឺជាកញ្ចប់ដែលត្រូវកំណត់វាគឺជាកញ្ចប់ដែលត្រូវកំណត់។ complete, ordered build plan ការបណ្តុះបណ្តាលនិងការបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តាល នៅពេលដែល Go មានគម្រោងបង្កើតពីប្រព័ន្ធម៉ូឌុលវាចាប់ផ្តើមផ្លាស់ប្តូរកូដរបស់អ្នកទៅជាអ្វីដែលម៉ាស៊ីនអាចដំណើរការ។ វាមានដំណោះស្រាយពីរដំណោះស្រាយ: ការកំណត់និងការតភ្ជាប់។ ការយល់ដឹងពីដំណោះស្រាយទាំងនេះគឺជាគោលបំណងដើម្បីទទួលបានអស្ចារ្យអំពីអ្វីដែលការបង្កើត Go គឺឆាប់រហ័ស, ដំណោះស្រាយនិងអាចកាត់បន្ថយ។ ការវេចខ្ចប់គឺ per-package សូមចែកចាយ ទោះបីជាវាជាផ្នែកមួយនៃគម្រោងរបស់អ្នកឬការផ្លាស់ប្តូរខាងក្រៅរបស់អ្នកទាំងអស់គឺជាផ្នែកមួយដែលត្រូវបានប្រៀបធៀបជាផ្នែកមួយដោយខ្លួនឯង។ នេះមានន័យថា ប្រសិនបើកញ្ចប់មិនបានផ្លាស់ប្តូរចាប់តាំងពីការបង្កើតចុងក្រោយនេះ, Go អាចបាត់បន្ថយការសរសេរចុងក្រោយរបស់វាទាំងអស់ប៉ុណ្ណោះប៉ុណ្ណោះប៉ុណ្ណោះប៉ុណ្ណោះប៉ុណ្ណោះប៉ុណ្ណោះប៉ុណ្ណោះប៉ុណ្ណោះប៉ុណ្ណោះប៉ុណ្ណោះប៉ុណ្ណោះប៉ុណ្ណោះ។ one package at a time intermediate artifacts ការ paralelism គឺជាអត្ថប្រយោជន៍ផ្សេងទៀតនៃដំណោះស្រាយ per-package នេះ: ដោយសារតែក្រុមហ៊ុន compiler បានដឹងកំណត់កំណត់កំណត់កំណត់កំណត់កំណត់, វាអាចកំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់ ការបណ្តុះបណ្តាលគឺជាការជ្រើសរើស នេះគឺជាដំណើរការនៃការរួមបញ្ចូលគ្នានៃការវេចខ្ចប់គ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានៃគ្នានេះ។ សៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវភៅសៀវ នៅលើគម្រោងមួយ, Go អាចកំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់! ការបណ្តុះ only links main packages into binaries go build ./... ការបណ្តុះបណ្តាលគឺជាដំណោះស្រាយសំខាន់បំផុតនៅក្នុងការបណ្តុះបណ្តាលដោយសារតែវាមានការរួមបញ្ចូលទាំងអស់នៃការបណ្តុះបណ្តាលទៅក្នុងការដោះស្រាយគំរូតែមួយនិងការបណ្តុះបណ្តាល metadata ។ ដោយធ្វើឱ្យការបណ្តុះបណ្តាលមានការជ្រើសរើសនិងផ្អែកលើការបណ្តុះបណ្តាលបណ្តុះបណ្តាលបណ្តុះបណ្តាលបណ្តុះបណ្តាលមានប្រសិទ្ធិភាព។ អ្វីដែលបានបញ្ចប់នៅក្នុង Binary The final binary is more than just your compiled code. It includes: ទាំងអស់នៃការផ្លាស់ប្តូរដែលអាចរកបានពីមូលដ្ឋាន ការបង្កើត metadata រួមទាំងកំណែម៉ូឌុលនិងទិន្នន័យ commit វិញ្ញាបនប័ត្រកម្រិតម៉ាស៊ីនដែលមានអត្ថប្រយោជន៍សម្រាប់វេទិកាតម្រូវការ ការរួមបញ្ចូលទាំងនេះគឺជាមូលហេតុដែលឧបករណ៍ Binary របស់ Go គឺអាចដំឡើងដោយខ្លួនឯងនិងអាចដំឡើងបាន: ពួកគេរួមបញ្ចូលទាំងអស់ដែលត្រូវការដើម្បីដំឡើងដោយគ្មានការផ្លាស់ប្តូរសៀវភៅខាងក្រៅឬបរិស្ថានដំឡើង។ ពីគំនិតរបស់មនុស្សនេះវាធ្វើឱ្យការដំឡើងយ៉ាងងាយស្រួល។ ពីគំនិតរបស់ម៉ាស៊ីនប្រព័ន្ធដំឡើងអាចត្រួតពិនិត្យនិងរក្សាទុកអ្វីគ្រប់យ៉ាងដែលមានប្រសិទ្ធិភាពដើម្បីធានាថាការដំឡើងដំឡើងជាឆាប់រហ័សនិងការកាត់បន្ថយ។ The Build Cache: មជ្ឈមណ្ឌលនៃកម្លាំង At the heart of Go's speed and predictability is its រាល់កញ្ចប់ដែលបានកំណត់, រាល់សម្ភារៈ intermediate និងឧបករណ៍ដំណើរការមួយចំនួនក៏ត្រូវបានរក្សាទុកនៅក្នុងការចែកចែកចែកចែកចែកចែកចាយដែលអនុញ្ញាតឱ្យ Go ដើម្បីប្រើសម្រាប់ការធ្វើការនៅលើ builds, commands និងបន្ថែមទៀត។ ការយល់ដឹងអំពីរបៀបដែល cache ធ្វើការគឺជាការសំខាន់ដើម្បីទទួលបានការយល់ដឹងអំពីរបៀបដែល Go builds ធ្វើឱ្យប្រសើរឡើងយ៉ាងឆាប់រហ័សផងដែរសម្រាប់គម្រោងធំ។ build cache go run អ្វីដែល Cache Stores វាគឺជាការច្រើនជាងការកំណត់ Binary Cache ។ វាគឺជា: ប្រព័ន្ធ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ លទ្ធផលនៃការធ្វើតេស្តរួមបញ្ចូលទាំងទិន្នន័យនៃការជោគជ័យ លទ្ធផលឧបករណ៍ចុងក្រោយដែលត្រូវការសម្រាប់ការធ្វើដំណើរដោយការធ្វើដំណើរឬការធ្វើដំណើរការ ប្រព័ន្ធ ប្រតិបត្តិការ Cache Live on Disk (ប្រព័ន្ធប្រតិបត្តិការ Cache Live on Disk) ) និងគឺជាការកំណត់ត្រឹមត្រូវពេញលេញដែលមានន័យថាមានកញ្ចប់ដូចគ្នានេះដែលបានកំណត់ជាមួយការចូលដូចគ្នានឹងធ្វើឱ្យមានការបញ្ចូលគ្នានៃការកំណត់ត្រឹមត្រូវដូចគ្នានេះធ្វើឱ្យមានការធានាថាមានការកំណត់រចនាសម្រាប់ការកំណត់រចនាសម្រាប់រចនាសម្រាប់រចនាសម្រាប់រចនាសម្រាប់រចនាសម្រាប់រចនាសម្រាប់រចនាសម្រាប់រចនាសម្រាប់រចនាសម្រាប់រចនាសម្រាប់ម៉ាស៊ីនផ្សេងគ្នា។ $GOCACHE អាសយដ្ឋានអ៊ីនធឺណិត - Not Timestamp-Based ទោះបីជាប្រព័ន្ធដំឡើងធម្មតាដែលផ្អែកលើឯកសារ timestamps ។ ការកំណត់គោលបំណង Cache Cache Key គឺជាគោលបំណងនៃ: content-based hashing ប្រព័ន្ធ ប្រតិបត្តិការ ប្រព័ន្ធ ប្រតិបត្តិការ ទំហំ compiler ការសាងសង់សៀវភៅ វេទិកាគោលបំណង (GOOS / GOARCH) ការផ្លាស់ប្តូរបរិស្ថាន ការរចនាសម្ព័ន្ធនេះធានាថាមានការកែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែ គោលការណ៍ Cache Invalidation បានបង្ហាញ ទោះបីជាជាមួយនឹងការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយ។ ការផ្លាស់ប្តូរកូដប្រព័ន្ធប្រតិបត្តិការឬការបង្កើតស្លាក ការផ្លាស់ប្តូរក្លឹបក្លឹបក្លឹបក្លឹបក្លឹបក្លឹបក្លឹបក្លឹបក្លឹបក្លឹប ទាញយកឯកសារក្នុងកញ្ចប់ ប្រព័ន្ធ caching របស់ Go គឺជាប្រព័ន្ធគួរឱ្យចាប់អារម្មណ៍: វាគ្រាន់តែបង្កើតឡើងវិញអ្វីដែលពិតជាត្រូវការដើម្បីបង្កើតឡើងវិញ។ ទោះបីជាការផ្លាស់ប្តូរតូចមួយដែលមិនមែនជាប្រសិទ្ធិភាពអាចបង្កើតឡើងវិញប្រសិនបើពួកគេមានប្រសិទ្ធិភាពក្នុងការបង្កើត hash នៃកញ្ចប់ប៉ុន្តែប្រសិនបើវាមិនមែនជាប្រសិនបើគួរឱ្យចាប់អារម្មណ៍នៅក្នុង cache នេះ។ ហេតុអ្វីដែល Cache គឺជាការសុវត្ថិភាពដើម្បីរក្សាទុក ការសាងសង់ cache ត្រូវបានរចនាឡើងដើម្បីជឿទុកចិត្តនិងឆាប់រហ័ស: ប្រហែលជាមិនចាំបាច់ធ្វើការចែកចែកចែកចែកចែកចែកចែកចាយ ការច្នៃប្រឌិតពីច្នៃប្រឌិតបានបង្កើតសម្ភារៈដូចគ្នានេះ សូមធ្វើដំណើរការធ្វើដំណើរការធ្វើដំណើរការធ្វើដំណើរការធ្វើដំណើរការធ្វើដំណើរការធ្វើដំណើរការធ្វើដំណើរការធ្វើដំណើរការធ្វើដំណើរការធ្វើដំណើរការធ្វើដំណើរការ នេះជាមូលហេតុដែលការបង្កើតបន្ថែមរបស់ Go គឺយ៉ាងឆាប់រហ័សណាស់: កម្មវិធីកែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែ ផលិតផល Artifacts go build សូមសាងសង់ គោលបំណង go build គឺជាកន្លែងធ្វើការនៃបណ្តាញឧបករណ៍ Go ។ គោលបំណងរបស់វាគឺមានភាពងាយស្រួលក្នុងការបង្ហាញប៉ុន្តែមានភាពងាយស្រួលក្នុងការអនុវត្ត: ការយល់ដឹងពីអ្វី វាគឺជាការជួយអ្នកជឿទុកចិត្តក្នុងការជឿទុកចិត្តនិងការជឿទុកចិត្តក្នុងការជឿទុកចិត្តនិងការជឿទុកចិត្ត។ compile packages, link them if necessary, and produce a binary that is correct and reproducible go build តើធ្វើដូចម្តេចដើម្បីបង្កើតកញ្ចប់ Handles នៅពេលដែលអ្នកលេង នៅលើម៉ូឌុលឬកញ្ចប់, ឧបករណ៍ដំបូងធ្វើតេស្តពីក្រាហ្វិកការផ្លាស់ប្តូរដែលនាំចេញពី កញ្ចប់ទាំងអស់នៅក្នុងកញ្ចប់នេះត្រូវបានត្រួតពិនិត្យដោយគោលបំណងកញ្ចប់បណ្តុះបណ្តាល: ប្រសិនបើកញ្ចប់បណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តាល។ go build go.mod ដោយសារតែ , touching a single file inside a package can trigger a rebuild of the entire package. Conversely, if a dependency hasn't changed, it's never rebuilt, even if other packages rely on it. This per-package granularity is one of the reasons Go's ទំហំយ៉ាងល្អដូច្នេះផងដែរសម្រាប់គម្រោងធំ។ operates at the package level incremental builds Linking និងចុងក្រោយ Binary ដូចដែលយើងបាននិយាយមុនពេលនេះ វាត្រូវបានបង្កើតឡើងសម្រាប់ប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធប្រតិបត្តិការ go build ដំណោះស្រាយព័ត៌មាន Module Commit hashes (ប្រសិនបើមាន) ប្លាស្ទិចប្លាស្ទិចប្លាស្ទិច ដោយគោលបំណងការរួមបញ្ចូលទិន្នន័យការត្រួតពិនិត្យទិន្នន័យទិន្នន័យនេះត្រូវបានគ្រប់គ្រងដោយ ស្លាក, ដែលមានគោលបំណងដើម្បី "auto" និងបូមទិន្នន័យ VCS នៅពេលដែលគោលបំណងស្លាកអនុញ្ញាត (ការប្រើប្រាស់ ការបាត់បង់ឬ លក្ខណៈពិសេស: លក្ខណៈពិសេសបន្ថែមទៀតអាចរកបាននៅក្នុងឯកសារ . -buildvcs -buildvcs=false -buildvcs=true ទីនេះ នេះធ្វើឱ្យប្រព័ន្ធ Binary របស់ Go ដោយផ្ទាល់ខ្លួននិងអាចដំឡើងយ៉ាងខ្លាំងហើយអនុញ្ញាតឱ្យអ្នកដំឡើងពួកគេដោយមានសុវត្ថិភាពដោយគ្មានការអរគុណអំពីការបាត់បន្ថយការផ្លាស់ប្តូរ។ ទោះជាយ៉ាងណាក៏ដោយអ្នកគួរឱ្យចាប់អារម្មណ៍យ៉ាងណាក៏ដោយអ្នកគួរឱ្យចាប់អារម្មណ៍យ៉ាងណាក៏ដោយអ្នកគួរឱ្យចាប់អារម្មណ៍យ៉ាងណាក៏ដោយអ្នកគួរឱ្យចាប់អារម្មណ៍។ ដោយគោលបំណង កុំព្យូទ័របង្វិលបង្វិលបង្វិលបង្វិលបង្វិលបង្វិលបង្វិលបង្វិលបង្វិលបង្វិលបង្វិល វាគឺជាការធ្វើឱ្យប្រសិនបើអ្នកមិនធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកបានធ្វើឱ្យប្រសិនបើអ្នកមានប្រសិនប ស្លាក ឬការប្រើប្រាស់ ដើម្បីបង្កើតកញ្ចប់ជាច្រើនក្នុងមួយដំណើរការ។ go build go build -o ./... នៅលើ Windows, executables មាន នៅពេលដែលអ្នកបង្កើតកញ្ចប់សំខាន់ជាច្រើនក្នុងមួយពេល (ដូចជា ) មិនមាន , Go បានសរសេរ binary មួយក្នុងប្រព័ន្ធប្រតិបត្តិការរបស់អ្នកក្នុងប្រព័ន្ធប្រតិបត្តិការនេះ។ .exe ./cmd/... -o រចនាសម្ព័ន្ធដែលមានគុណភាពនិងមានគុណភាព ការរួមបញ្ចូលគ្នានៃការកំណត់ទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យ ការរចនាសម្ព័ន្ធគឺអាចបង្ហាញបាននៅលើម៉ាស៊ីន unchanged code is never rebuilt unnecessarily សម្ភារៈ intermediate ត្រូវបានប្រើឡើងវិញដើម្បីបង្កើនអតិបរមាពេលវេលា ដោយសារតែ មិនមែនគ្រាន់តែជាការកំណត់លេខកូដ, វាគឺជា . go build orchestrating a deterministic pipeline that balances human convenience with machine efficiency : ការងាយស្រួលដោយគ្មានលក្ខណៈពិសេស go run លេង លេង ប្រសិន វាគឺជាបុគ្គលិកដែលផលិតផលដែលអ្នកអាចដំឡើង។ នេះគឺជាដំណើរការល្បឿនលឿនសម្រាប់ការសាកល្បងនិងដំណើរការកូដដោយឥតគិតថ្លៃ។ អ្នកអភិវឌ្ឍន៍ជាច្រើនគិតថាវាជា "ការសាកល្បងនិងដំណើរការនៅក្នុងដំណើរការមួយ" ប៉ុន្តែវាមិនមែនជាវា: នៅក្រោមកូដនេះវាប្រើប្រព័ន្ធសាកល្បងដូចគ្នានេះ។ , វាត្រូវបានប្រសើរឡើងសម្រាប់ភាពងាយស្រួលជាងការរស់ស្អាត។ go build go run go build អ្វី ជាការពិតវា go run នៅពេលដែលអ្នកប្រភេទ (ឬសៀវភៅឯកសារ) Go ជាលើកដំបូង evaluates កញ្ចប់និងការផ្លាស់ប្តូររបស់វាដូចវានឹងសម្រាប់ ទោះបីជាទិន្នន័យណាមួយដែលបានកែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែ . go run main.go go build links the main package into a temporary binary, executes it, and deletes the binary once the program finishes ពីគោលបំណងនៃការ Caching, វាគឺជាការពន្យល់អំពីរបៀបដែលធ្វើឱ្យប្រសិនបើការចែកចាយប្រសើរឡើងវិញនៃកម្មវិធីដូចគ្នានេះមានភាពឆាប់រហ័ស: ការចែកចាយប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើ go run ហេតុអ្វី មានអារម្មណ៍ផ្សេងគ្នា go run ទោះបីជាការផ្លាស់ប្តូរបំពង់បំពង់បំពង់ដូចគ្នា, ដូច្នេះវាអាចមានភាពងាយស្រួលជាងមុននៅក្នុងប្រវត្តិសាស្រ្តមួយចំនួន។ ដោយសារតែវាត្រូវបានបង្កើតការបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តាល។ go run ប្រភេទផ្សេងទៀតគឺថា . This is exactly the point: it trades binary reuse for ease of execution. You don't need to think about where to place the binary or what to call it, the tool handles it automatically. go run does not leave a persistent artifact ពេលដែល គឺជាឧបករណ៍ត្រឹមត្រូវ - និងពេលដែលវាមិនមែន go run នេះគឺជាការល្អឥតខ្ចោះសម្រាប់: go run ការធ្វើតេស្តល្បឿនលឿនឬសៀវភៅ ប្រព័ន្ធ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ការធ្វើតេស្តកម្មវិធីតូចតាមរយៈការផ្លាស់ប្តូរ វាត្រូវបានប្រសើរជាងមុនសម្រាប់: ការផលិតឬការដំឡើង រចនាសម្ព័ន្ធរចនាសម្ព័ន្ធរចនាសម្ព័ន្ធរចនាសម្ព័ន្ធរចនាសម្ព័ន្ធរចនាសម្ព័ន្ធរចនាសម្ព័ន្ធរចនាសម្ព័ន្ធ បំពង់ CI ដែលមានភាពងាយស្រួលជាងការ caching binaries persistent ។ ក្នុងករណីទាំងនេះគំរូដែលបានផ្តល់អនុសាសន៍គឺ , ដែលផ្តល់ឱ្យអ្នកនូវអត្ថប្រយោជន៍នៃការ caching, reproductibility, និង artefact ទៀងទាត់ដោយមិនបាត់បង់សមត្ថភាព. go build && ./binary និងការត្រឹមត្រូវដែលត្រូវបានបំពាក់ ការធ្វើតេស្ត ការធ្វើតេស្ត នេះ គោលនយោបាយនេះត្រូវបានបង្កើតឡើងនៅលើគោលនយោបាយដូចគ្នា និង ការយល់ដឹងអំពីរបៀបដែលប្រព័ន្ធធ្វើតេស្តចូលរួមជាមួយប្រព័ន្ធសាងសង់បានជួយពន្យល់អំពីរបៀបដែលប្រព័ន្ធធ្វើតេស្តមួយចំនួនធ្វើតេស្តនៅពេលដែលប្រព័ន្ធផ្សេងទៀតធ្វើតេស្តធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្តបានធ្វើតេស្ត។ go test go build go run ការប្រើប្រាស់ច្នៃប្រឌិតក្នុងការធ្វើតេស្ត នៅពេលដែលអ្នកលេង , Go ជាលើកដំបូងបានកំណត់កែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែ ដូចគ្នានេះជាមួយ ឬ នេះមានន័យថាសម្រាប់ការធ្វើតេស្តទំហំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទ័រ។ go test reused from the build cache go build go run ប្រសិនបើមានបណ្តុះបណ្តាលជាច្រើនគ្នានេះវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវាអាចធ្វើឱ្យប្រសិនបើវា ការធ្វើតេស្ត Caching លើសពីការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយ ប្រសិនបើការធ្វើតេស្តបានឆ្លងកាត់និងមិនមានការផ្លាស់ប្តូរនៃការផ្លាស់ប្តូរឬលក្ខណៈពិសេសឬលក្ខណៈពិសេសរបស់វា, Go អាចឆ្លងកាត់ការធ្វើតេស្តទាំងអស់។ caches test results ការកាត់បន្ថយផលប៉ះពាល់នៃការធ្វើតេស្តត្រូវបានអនុវត្តតែនៅក្នុងដំណើរការគណនីកញ្ចប់ (ដូចជា: ឬ លក្ខណៈពិសេសនៃការធ្វើតេស្ត ( នៅពេលដែលអ្នកមិនមានកញ្ចប់ args), caching ត្រូវបានបិទ. go test . go test ./... go test ការអនុវត្តនេះត្រូវបានគ្រប់គ្រងដោយ លក្ខណៈពិសេស: ឧទាហរណ៍ គោលបំណងនៃការអនុវត្តដោយគ្មានការអនុវត្ត។ ( ការធ្វើតេស្ត / ការធ្វើតេស្ត Benchmarks ។ នេះគឺជាវិធីដែលមានប្រសិទ្ធិភាពក្នុងការឆ្លើយតបពីផលិតផល។ សូមមើល សម្រាប់ព័ត៌មានបន្ថែមទៀត។) -count go test -count=1 -count -count=1 សៀវភៅ ការកាត់បន្ថយការធ្វើតេស្តបានបង្កើនផលិតផលរបស់អ្នកអភិវឌ្ឍន៍និងប្រសិទ្ធិភាព CI ជាពិសេសសម្រាប់គម្រោងធំទូលំទូលាយដែលមានការកាត់បន្ថយការធ្វើតេស្តធំទូលំទូលំទូលាយ។ វាត្រូវបានបង្កើនគោលបំណងរបស់ Go: . the system should avoid unnecessary work while preserving correctness Cache Invalidation នៅក្នុងការធ្វើតេស្ត ការធ្វើតេស្តអាចត្រូវបានធ្វើឡើងវិញដោយស្វ័យប្រវត្តិប្រសិនបើ: លេខកូដសាកល្បងខ្លួនឯងបានផ្លាស់ប្តូរ។ ទោះបីជាការផ្លាស់ប្តូរគ្រប់ប្រភេទនៃការធ្វើតេស្តនេះបានផ្លាស់ប្តូរ។ ស្លាកដែលមានប្រសិទ្ធិភាពក្នុងការធ្វើតេស្តនេះបានផ្លាស់ប្តូរ។ សៀវភៅដែលមិនអាចកាត់បន្ថយឬឯកសារដែលបានផ្លាស់ប្តូរ / env អាចកាត់បន្ថយការប្រើឡើងវិញផងដែរ។ ប្រសិនបើវាជាការពិតណាស់, អ្នកអាចជឿទុកចិត្តផលិតផលដែលបានចែកចាយដោយការដឹងថាវាជា គោលបំណងនេះកាត់បន្ថយការសាងសង់ "ស្អាត" ដែលបង្កើតឡើងដោយការសាងសង់ថ្មីដែលមិនចាំបាច់ហើយបង្ហាញពីការរៀបចំនៃការរៀបចំនៃការរៀបចំនៃការរៀបចំនៃការងាយស្រួល។ deterministic and reproducible ទាញយក Handy Snippets នេះគឺជាច្រើនដែលមានប្រសិទ្ធិភាព គោលបំណងដែលធ្វើឱ្យប្រសិនបើអ្នកមានលក្ខណៈពិសេសក្នុងការប្រើប្រាស់ Caching: go test ការធ្វើតេស្តថ្មី: go test -count=1 ។/... - ដូចដែលយើងបានឃើញមុនពេលនេះ, នេះអនុញ្ញាតឱ្យការកាត់បន្ថយការកាត់បន្ថយផលិតផលការធ្វើតេស្ត។ ការធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្តនេះធ្វើតេស្ត។ ការធ្វើតេស្ត -bench ។ -count=3 - បានធ្វើតេស្ត 3 ដងដើម្បីទទួលបានការវាយតម្លៃដែលមានស្ថេរភាព។ ហេតុអ្វីវាជាការសំខាន់សម្រាប់អ្នកអភិវឌ្ឍន៍ ពីអារម្មណ៍នៃអ្នកអភិវឌ្ឍន៍ការរួមបញ្ចូលគ្នានៃការកំណត់រចនាសម្ព័ន្ធនិងការកំណត់រចនាសម្ព័ន្ធផលិតផលសាកល្បងបានបង្កើតដំណើរការការងារដែលមានអារម្មណ៍យ៉ាងឆាប់រហ័សនិងមានសុវត្ថិភាព: ការផ្លាស់ប្តូរតូចតែធ្វើឱ្យប្រសើរឡើងនូវដំណោះស្រាយដែលត្រូវការ។ ការធ្វើតេស្តជារៀងរាល់តែធ្វើឡើងបន្ទាប់មកប៉ុណ្ណោះប៉ុណ្ណោះប៉ុណ្ណោះប្រសិនបើអ្វីបានផ្លាស់ប្តូរ។ អ្នកផ្គត់ផ្គង់អាចធ្វើដំណើរការយ៉ាងឆាប់រហ័សដោយគ្មានការអរគុណអំពីស្ថានភាពស្អាត។ By treating both packages and test results as first-class cacheable artifacts, Go makes testing fast and predictable, reinforcing the same "human + machine" optimization that underlies និង . go build go run ការសាកល្បងនិងការកាត់បន្ថយប្រព័ន្ធ Build ទោះជាយ៉ាងណាក៏ដោយ, ប្រព័ន្ធ build របស់ Go បានធ្វើដូចគ្នានេះដូចគ្នានេះអ្នកចង់បានយ៉ាងហោចណាស់និងមានប្រសិទ្ធិភាព។ នៅពេលដែលអ្វីមួយគត់មានភាពងាយស្រួល, ទោះជាយ៉ាងណាក៏ដោយប្រព័ន្ធ toolchain បានផ្តល់ឱ្យអ្នកនូវភាពងាយស្រួលយ៉ាងឆាប់រហ័សក្នុងអ្វីដែលវាកំពុងធ្វើ។ គោលដៅនេះគឺដើម្បីដឹងថាសម្រាប់ការផ្លាស់ប្តូរនិងរបៀបដើម្បីបង្ហាញអ្វីដែលអ្នកមើលឃើញ។ ការធ្វើការ Toolchain Talk Go ផ្តល់នូវកំណត់តូចដែលបង្ហាញការបង្កើតបំពង់ដោយគ្មានការផ្លាស់ប្តូរพฤติกรรมរបស់វា: -x បានបោះពុម្ពជម្រើសពិតប្រាកដដែលត្រូវបានដំណើរការក្នុងអំឡុងពេលវេលា។ នេះរួមបញ្ចូលទាំងជម្រើសកំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់កំណត់។ វាគឺជាវិធីដែលមានល្បឿនបំផុត -n បង្ហាញពីអ្វីដែលនឹងត្រូវបានដំណើរការដោយគ្មានការធ្វើដំណើរការបញ្ជា។ នេះគឺមានប្រសិទ្ធិភាពនៅពេលដែលអ្នកចង់ដឹងអំពីការរចនាសម្រាប់ការបង្កើតដោយគ្មានការបង្កើតឡើងវិញ។ នេះអនុញ្ញាតឱ្យអ្នកត្រួតពិនិត្យឯកសារបណ្តុះបណ្តាល, លេខកូដដែលបានបង្កើត, និងអាសយដ្ឋានអាសយដ្ឋានអាសយដ្ឋានដែលបានបង្កើតនៅពេលវេលាដែលបានបង្កើតឬបណ្តុះបណ្តាល។ ស្លាកទាំងនេះបានផ្លាស់ប្តូរប្រព័ន្ធឧបករណ៍ Go ពីកញ្ចក់ពាក់កណ្តាលទៅក្នុងបំពង់បង្វិល។ ជាសំខាន់ណាស់ពួកគេមិនអនុញ្ញាតឱ្យការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយ។ ការយល់ដឹងអំពីរបៀបដែលវាបានធ្វើឱ្យប្រសើរឡើងកញ្ចប់ មួយនៃប្រភពធម្មតាបំផុតនៃការបំពាក់គឺការសាងសង់កញ្ចប់ "ដោយមិនគួរឱ្យចាប់អារម្មណ៍ទេ" ជាមួយនឹងម៉ូដែលគួរឱ្យចាប់អារម្មណ៍ដែលត្រឹមត្រូវនេះអាចធ្វើបានយ៉ាងងាយស្រួលក្នុងការកាត់បន្ថយការកាត់បន្ថយ: វាត្រូវបានធ្វើឱ្យប្រសើរឡើងនៅពេលដែលបញ្ចូលគ្នានៅក្នុងគោលបំណង cache របស់វាបានផ្លាស់ប្តូរ។ ទិន្នន័យរួមបញ្ចូលទាំងកូដទិន្នន័យ, ស្លាកការបង្កើត, ទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យទិន្នន័យ។ ការផ្លាស់ប្តូរការផ្លាស់ប្តូរការផ្លាស់ប្តូរផ្លាស់ប្តូរផ្លាស់ប្តូរផ្លាស់ប្តូរផ្លាស់ប្តូរផ្លាស់ប្តូរផ្លាស់ប្តូរផ្លាស់ប្តូរ។ ការប្រើប្រាស់ អ្នកអាចមើលឃើញប្រសិនបើ Go បានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើបានប្រើសម្រាប់ប្រសិនបើ ដូចជាការឆ្លើយតបដំបូង -x go clean -cache ការបង្កើតថ្មី (ពេលដែលអ្នកពិតប្រាកដមានន័យថាវា) នៅពេលដែលអ្នកពិតប្រាកដចង់ឆ្លងកាត់ការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយ។ -ការសាងសង់ថ្មីនៃកញ្ចប់, ការប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រ Go clean -cache clears the entire build cache - ការចែកចាយការចែកចាយការចែកចាយការចែកចាយការចែកចាយ វាត្រូវបានរចនាឡើងដើម្បីធ្វើឱ្យការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រាប់ការប្រើសម្រើស។ ការព្យាយាមការព្យាយាមការព្យាយាមការព្យាយាមការព្យាយាមការព្យាយាម ដោយសារតែប្រព័ន្ធរចនាសម្ព័ន្ធរបស់ Go គឺជាប្រព័ន្ធកំណត់រចនាសម្ព័ន្ធ, ការជឿទុកចិត្តមិនមែនជាការជួយ។ លោក និង សូមផ្តល់ឱ្យអ្នកនូវសញ្ញាបនប័ត្រពិតប្រាកដអំពីអ្វីដែលកំពុងធ្វើ, ដែលជាការពិតប្រាកដជាច្រើនដើម្បីពន្យល់នូវដំណើរការសាកល្បង។ -x -n -work ប្រសិនបើអ្នកមានអារម្មណ៍ថា: ការរចនាសម្ព័ន្ធគ្នានៅក្នុងចំណោមគ្នានៅក្នុង សៀវភៅនេះគឺជាផ្នែកមួយនៃការងារ ទោះជាយ៉ាងណាក៏ដោយវាជាការសុវត្ថិភាពដើម្បីប្រើឡើងវិញ។ ការដោះស្រាយលក្ខណៈពិសេសនៃការដោះស្រាយគោលបំណងនៃការដោះស្រាយគោលបំណងនៃការដោះស្រាយគោលបំណងនៃការដោះស្រាយគោលបំណងនៃការដោះស្រាយគោលបំណងនៃការដោះស្រាយគោលបំណងនៃការដោះស្រាយគោលបំណងនៃការដោះស្រាយ។ លទ្ធផលសម្រាប់គម្រោងពិតប្រាកដ ការជ្រើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរើសរ មានអារម្មណ៍យ៉ាងឆាប់រហ័សនៅក្នុងកន្លែងដែលជាអ្វីដែលធ្វើឱ្យការកម្រិត Go ល្អណាស់នៅក្នុងបរិស្ថានផលិតកម្ម។ go build បំពង់ CI និង Reproductibility គោលបំណងរបស់ Go នៅលើការបង្កើតដែលមានតម្រូវការទិន្នន័យដែលមានតម្រូវការធ្វើឱ្យវាត្រូវបានអនុវត្តសម្រាប់ CI ជាពិសេស។ ដោយសារតែការបង្កើតផលិតផលត្រូវបានបង្កើតដោយពេញលេញពីសម្ភារៈដើម, កំណែម៉ូឌុលនិងការកំណត់ពិសេស, ការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការបង្កើតការ ប្រសិនបើអ្នកកំពុងប្រើការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយ។ Monorepos និងមូលដ្ឋានកូដធំ នៅលើការរក្សាសម្ព័ន្ធធំទូលំទូលាយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយ។ ការផ្លាស់ប្តូរនេះគឺជាការដែលកញ្ចប់ធំទូលំទូលាយឬខុសគ្នានឹងអាចក្លាយទៅជាការកាត់បន្ថយ។ ការផ្លាស់ប្តូរតូចមួយនៅក្នុងកញ្ចប់ដែលត្រូវបានប្រើជាច្រើនអាចបាត់បន្ថយផ្នែកធំនៃការកាត់បន្ថយការកាត់បន្ថយពេលវេលានៃការកាត់បន្ថយទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូល ផែនការ, Tooling និង Automation ម៉ូដែលសាងសង់ដូចគ្នាអនុញ្ញាតឱ្យប្រព័ន្ធឧបករណ៍របស់ Go ។ ឧបករណ៍កំណត់កូដ, អ្នកផ្គត់ផ្គង់ភាសា, អ្នកផ្គត់ផ្គង់កូដនិងឧបករណ៍កំណត់កូដទាំងអស់ត្រូវបានផ្គត់ផ្គង់ដោយការយល់ដឹងគ្នានៃកូដរបស់អ្នកនៅលើកម្រិតកញ្ចប់ដូចគ្នានេះ។ ដោយសារតែប្រព័ន្ធឧបករណ៍កំណត់កម្រិតកំណត់កម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិតកម្រិត។ នេះគឺជាមូលហេតុមួយដែលឧបករណ៍ Go ធ្វើឱ្យប្រសើរឡើងយ៉ាងមិនធម្មតានិងមិនធម្មតានិងប្រព័ន្ធ CI នឹងមើលកូដរបស់អ្នកដូចគ្នានេះប្រសិនបើឧបករណ៍ compiler បានធ្វើ។ ពីការបញ្ចប់ដោយស្វ័យប្រវត្តិទៅនឹងការធ្វើតេស្តដោយស្វ័យប្រវត្តិទាំងអស់ត្រូវបានបង្កើតឡើងដោយគោលបំណងដូចគ្នាអំពីកញ្ចប់, ការផ្លាស់ប្តូរនិងការកាត់បន្ថយ។ លទ្ធផល: Trust the Model ប្រព័ន្ធការបង្កើតរបស់ Go មានជោគជ័យដោយសារតែវាបានធ្វើឱ្យការជួញដូរយ៉ាងច្បាស់: វាត្រូវបានប្រសើរឡើងសម្រាប់ការរចនាសម្ព័ន្ធប្រសើរជាងការច្នៃប្រឌិតនិងសម្រាប់ការរចនាសម្ព័ន្ធប្រសើរជាងការរចនាសម្ព័ន្ធប្រសើរជាងការរចនាសម្ព័ន្ធប្រសើរ។ នៅលើផ្ទៃនេះវាជាភាពងាយស្រួល។ នៅខាងក្រោមនេះវាជាបំពង់រចនាសម្ព័ន្ធយ៉ាងច្បាស់ដែលធ្វើឱ្យប្រព័ន្ធផ្សព្វផ្សាយជាផ្នែកមួយនៃការធ្វើការ, សម្ភារៈជាផ្នែកមួយនៃការពិតនិងការកាត់បន្ថយជាលក្ខណៈសម្បត្តិនៃការត្រឹមត្រូវជាងការបាត់បន្ថយការអនុវត្ត។ នៅពេលដែលអ្នក internalizes ម៉ូដែលនេះ, លក្ខណៈពិសេសទូទាត់ជាច្រើនបានចាប់ផ្តើមធ្វើឱ្យមានន័យ. Builds are fast not because Go is doing less work, but because it avoids doing ការធ្វើការ វាគឺជាការងាយស្រួលក្នុងការប្រើប្រាស់ម៉ាស៊ីនដូចគ្នា ការធ្វើតេស្តគឺមានសុវត្ថិភាពដោយសារតែផលិតផលនៃការធ្វើតេស្តត្រូវបានកាត់បន្ថយដោយប្រើការអនុវត្តលក្ខណៈពិសេសដូចគ្នានៃការកាត់បន្ថយការធ្វើតេស្តដែលបានកាត់បន្ថយការធ្វើតេស្ត។ មិនចាំបាច់ go run go build សម្រាប់មនុស្សវាមានន័យថាមានសាកល្បងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថយការឆ្លងកាត់បន្ថ ប្រសិនបើមានគោលបំណងមួយនោះវាគឺដូច្នេះ: ប្រព័ន្ធសាងសង់របស់ Go គឺមិនមែនជាអ្វីដែលត្រូវធ្វើការឬធ្វើការ។ វាគឺជាកម្មវិធី API នៅលើផ្ទាល់ខ្លួនរបស់ខ្លួន - មួយដែលជំរុញការយល់ដឹង។ នៅពេលដែលអ្នកជឿទុកចិត្តគំរូនេះ, ប្រព័ន្ធឧបករណ៍កាត់បន្ថយការគួរឱ្យមានភាពច្នៃប្រឌិតនិងចាប់ផ្តើមជឿទុកចិត្ត, ដែលគឺជាអ្វីដែលអ្នកចង់ពីវិជ្ជាជីវៈដែលបង្កើតកូដរបស់អ្នក។