1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>ByteSizeGo - Go Language Resources & Courses</title> 8 <meta name="description" 9 content="The best place to learn the Go programming language on the internet - courses, blogs, and guides, for learning Go programming from beginner to advanced levels."> 10 <link rel="canonical" href="https://www.bytesizego.com/"> 11 <link rel="icon" href="/static/img/favicon.svg" type="image/svg+xml"> 12 13 14 <meta property="og:title" content="ByteSizeGo - Go Language Resources & Courses"> 15 <meta property="og:description" 16 content="The best place to learn the Go programming language on the internet - courses, blogs, and guides. Start your journey with ByteSizeGo!"> 17 <meta property="og:image" content="https://www.bytesizego.com/static/img/share.png"> 18 <meta property="og:url" content="https://www.bytesizego.com/"> 19 <meta property="og:type" content="website"> 20 21 22 <meta name="twitter:card" content="summary_large_image"> 23 <meta name="twitter:title" content="ByteSizeGo - Go Language Resources & Courses"> 24 <meta name="twitter:description" 25 content="The best place to learn the Go programming language on the internet - courses, blogs, and guides. Start your journey with ByteSizeGo!"> 26 <meta name="twitter:image" content="https://www.bytesizego.com/static/img/share.png"> 27 28 29
29<script type="application/ld+json"> 30 { 31 "@context": "https://schema.org", 32 "@type": "Organization", 33 "name": "ByteSizeGo", 34 "url": "https://www.bytesizego.com", 35 "logo": "https://www.bytesizego.com/static/img/logo_with_text.png" 36 } 37 </script>
37 38 <link rel="stylesheet" href="/static/css/style.css"> 39 <style type="text/css">@font-face {font-family:'Roboto';font-style:normal;font-weight:300;src:url(/cf-fonts/v/roboto/5.2.10/cyrillic-ext/wght/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:300;src:url(/cf-fonts/v/roboto/5.2.10/latin/wght/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:300;src:url(/cf-fonts/v/roboto/5.2.10/math/wght/normal.woff2);unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:300;src:url(/cf-fonts/v/roboto/5.2.10/greek-ext/wght/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:300;src:url(/cf-fonts/v/roboto/5.2.10/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:300;src:url(/cf-fonts/v/roboto/5.2.10/latin-ext/wght/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:300;src:url(/cf-fonts/v/roboto/5.2.10/greek/wght/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:300;src:url(/cf-fonts/v/roboto/5.2.10/symbols/wght/normal.woff2);unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:300;src:url(/cf-fonts/v/roboto/5.2.10/vietnamese/wght/normal.woff2);
39unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/v/roboto/5.2.10/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/v/roboto/5.2.10/cyrillic-ext/wght/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/v/roboto/5.2.10/greek/wght/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/v/roboto/5.2.10/greek-ext/wght/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/v/roboto/5.2.10/vietnamese/wght/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/v/roboto/5.2.10/math/wght/normal.woff2);unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/v/roboto/5.2.10/latin/wght/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/v/roboto/5.2.10/latin-ext/wght/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/v/roboto/5.2.10/symbols/wght/normal.woff2);unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:500;src:url(/cf-fonts/v/roboto/5.2.10/latin-ext/wght/normal.woff2);
39unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:500;src:url(/cf-fonts/v/roboto/5.2.10/latin/wght/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:500;src:url(/cf-fonts/v/roboto/5.2.10/math/wght/normal.woff2);unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:500;src:url(/cf-fonts/v/roboto/5.2.10/vietnamese/wght/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:500;src:url(/cf-fonts/v/roboto/5.2.10/cyrillic-ext/wght/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:500;src:url(/cf-fonts/v/roboto/5.2.10/symbols/wght/normal.woff2);unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:500;src:url(/cf-fonts/v/roboto/5.2.10/greek/wght/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:500;src:url(/cf-fonts/v/roboto/5.2.10/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:500;src:url(/cf-fonts/v/roboto/5.2.10/greek-ext/wght/normal.woff2);
39unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/v/roboto/5.2.10/greek/wght/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/v/roboto/5.2.10/vietnamese/wght/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/v/roboto/5.2.10/latin-ext/wght/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/v/roboto/5.2.10/greek-ext/wght/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/v/roboto/5.2.10/cyrillic-ext/wght/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/v/roboto/5.2.10/symbols/wght/normal.woff2);unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/v/roboto/5.2.10/math/wght/normal.woff2);unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/v/roboto/5.2.10/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/v/roboto/5.2.10/latin/wght/normal.woff2);
39unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:400;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:400;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/greek/wght/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:400;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/cyrillic-ext/wght/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:400;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/latin/wght/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:400;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/latin-ext/wght/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:400;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/vietnamese/wght/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:700;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/greek/wght/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:700;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/latin/wght/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:700;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/latin-ext/wght/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:700;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/vietnamese/wght/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:700;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/cyrillic-ext/wght/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:700;src:url(/cf-fonts/v/jetbrains-mono/5.2.8/cyrillic/wght/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}</style> 40 41 <style> 42 body{color:#4B5563} 43 a{color:#3B82F6} 44 a:hover{color:#2563EB} 45 h1,h2,h3{color:#111827} 46 .container{display:block;max-width:1200px;margin:0 auto;padding:0 24px} 47 .badge{display:inline-block;background:#10B981;color:#fff;padding:5px 12px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:0.5px;text-transform:uppercase} 48 .badge-blue{background:#3B82F6} 49 .badge-amber{background:#fbbf24;color:#111827} 50 51 .hero{background:#f0f7ff;background-image:radial-gradient(ellipse 70% 90% at 50% -10%,rgba(255,255,255,0.95) 0%,transparent 65%);padding:96px 0 72px} 52 .hero .container{display:flex;flex-direction:column;align-items:center;text-align:center} 53 .hero-badge{display:inline-flex;align-items:center;gap:8px;background:#ffffff;border:1px solid #E5E7EB;border-radius:20px;padding:7px 14px;font-size:13px;font-weight:500;color:#4B5563;box-shadow:0 2px 8px rgba(0,0,0,0.06)} 54 .hero-badge::before{content:'';width:8px;height:8px;border-radius:50%;background:#10B981;animation:pulse-dot 1.5s infinite ease-in-out} 55 .hero h1{font-size:3.6em;font-weight:700;line-height:1.1;letter-spacing:-0.02em;margin:26px 0 20px;text-wrap:balance;max-width:15em} 56 .hero h1 em{font-style:normal;color:#3B82F6} 57 .hero-sub{font-size:1.25em;line-height:1.6;color:#4B5563;margin-bottom:36px;max-width:34em;text-wrap:pretty} 58 .hero-form-wrap{position:relative;width:100%;max-width:480px;margin-top:48px} 59 .hero-gopher{position:absolute;top:-78px;right:14px;width:118px;z-index:0;pointer-events:none;filter:drop-shadow(0 6px 14px rgba(0,0,0,0.12))} 60 .hero-form{display:flex;gap:10px;position:relative;z-index:1} 61 .hero-form input[type="email"]{flex:1;padding:16px 18px;font-size:15px;border:1px solid #E5E7EB;border-radius:8px;background:#fff;color:#111827;font-family:'Roboto',sans-serif;box-shadow:0 2px 8px rgba(0,0,0,0.05)} 62 .hero-form input[type="email"]:focus{outline:none;border-color:#3B82F6;box-shadow:0 0 0 2px rgba(59,130,246,0.25)} 63 .hero-form button{padding:16px 28px;font-size:15px;font-weight:700;font-family:'Roboto',sans-serif;background:#3B82F6;color:#fff;border:none;border-radius:8px;
63cursor:pointer;white-space:nowrap;transition:all 0.2s;box-shadow:0 4px 12px rgba(59,130,246,0.25)} 64 .hero-form button:hover{background:#2563EB;transform:translateY(-1px);box-shadow:0 6px 16px rgba(59,130,246,0.35)} 65 .hero-note{display:block;font-size:13px;color:#6B7280;margin-top:14px} 66 .hero-stats{display:flex;justify-content:center;gap:0;margin-top:64px;flex-wrap:wrap} 67 .hero-stat{padding:0 44px;text-align:center} 68 .hero-stat+.hero-stat{border-left:1px solid rgba(17,24,39,0.1)} 69 .hero-stat strong{display:block;font-size:2em;font-weight:700;color:#111827;letter-spacing:-0.01em} 70 .hero-stat span{font-size:0.95em;color:#6B7280} 71 @media (max-width:900px){.hero{padding:60px 0 52px}.hero h1{font-size:2.4em}.hero-form{flex-direction:column}.hero-stats{margin-top:44px}.hero-stat{padding:0 20px}} 72 @media (max-width:600px){.hero-stats{flex-direction:column;gap:20px}.hero-stat+.hero-stat{border-left:none}} 73 74 .goflow-section{background:linear-gradient(135deg,#10B981 0%,#059669 100%);padding:80px 0;position:relative;overflow:hidden} 75 .goflow-section::before{content:'';position:absolute;top:-50%;left:-20%;width:60%;height:200%;background:radial-gradient(ellipse,rgba(255,255,255,0.1) 0%,transparent 70%);pointer-events:none} 76 .goflow-container{display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:64px} 77 .goflow-content h2{font-size:2.5em;font-weight:700;color:#ffffff;margin:16px 0 14px;text-wrap:pretty} 78 .goflow-content>p{font-size:1.15em;color:#ffffff;margin-bottom:22px;line-height:1.6;max-width:30em;text-wrap:pretty} 79 .goflow-features{list-style:none;margin:0 0 30px;padding:0;display:flex;flex-direction:column;gap:10px} 80 .goflow-features li{font-size:15.5px;color:#ffffff;line-height:1.5;display:flex;align-items:baseline;gap:10px} 81 .goflow-features li::before{content:'â';font-weight:700;color:#fbbf24} 82 .goflow-buttons{display:flex;gap:16px;align-items:center;flex-wrap:wrap} 83 .goflow-cta-button{background:#ffffff;color:#059669;padding:16px 32px;font-family:'Roboto',sans-serif;font-size:16px;font-weight:bold;border:none;border-radius:8px;cursor:pointer;transition:all 0.3s;box-shadow:0 4px 15px rgba(0,0,0,0.15)} 84 .goflow-cta-button:hover{background:#fbbf24;color:#111827;transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,0.2)} 85 .goflow-free{color:rgba(255,255,255,0.85);font-size:14px;font-weight:500} 86 87 .goflow-demo{position:relative;max-width:440px;margin:0 auto;width:100%} 88 .goflow-app{background:#111827;border-radius:16px;padding:22px;box-shadow:0 24px 60px rgba(0,0,0,0.35);border:1px solid #374151} 89 .goflow-app-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px} 90 .goflow-pills{display:flex;gap:8px} 91 .goflow-pill{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;background:#1f2937;border:1px solid #374151;border-radius:20px;padding:5px 11px;font-size:12.5px;font-weight:700;color:#fff} 92 .goflow-progress{height:10px;background:#1f2937;border-radius:6px;overflow:hidden;margin-bottom:18px} 93 .goflow-progress span{display:block;height:100%;width:64%;background:#58cc02;border-radius:6px} 94 .goflow-q{color:#9CA3AF;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:0.5px;margin-bottom:10px} 95 .goflow-code{white-space:pre-wrap;background:#1f2937;border:1px solid #374151;border-radius:10px;padding:16px;font-family:'JetBrains Mono',ui-monospace,monospace;font-size:13.5px;line-height:1.7;color:#E5E7EB;margin-bottom:14px;overflow-x:auto} 96 .goflow-code .kw{color:#3B82F6} 97 .goflow-code .st{color:#10B981} 98 .goflow-code .blank{display:inline-block;min-width:74px;border-bottom:2px dashed #6B7280;color:#fbbf24;text-align:center;font-weight:700} 99 .goflow-choices{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px} 100 .goflow-choice{background:#1f2937;border:1px solid #374151;border-radius:8px;padding:8px 14px;font-family:'JetBrains Mono',ui-monospace,monospace;font-size:13px;color:#fff} 101 .goflow-choice.picked{border-color:#58cc02;color:#58cc02;box-shadow:0 0 0 1px #58cc02 inset} 102 .goflow-check{width:100%;background:#58cc02;color:#111827;border:none;border-radius:10px;padding:13px;font-family:'Roboto',sans-serif;font-size:15px;font-weight:700;letter-spacing:0.5px;text-transform:uppercase;box-shadow:0 4px 0 #3d8c01;cursor:pointer} 103 .goflow-xp{position:absolute;top:-14px;right:-10px;background:#fbbf24;color:#111827;font-weight:700;font-size:13px;border-radius:20px;padding:6px 12px;box-shadow:0 4px 12px rgba(0,0,0,0.25);z-index:1} 104 .goflow-demo-gopher{position:absolute;bottom:-24px;left:-58px;width:120px;filter:drop-shadow(0 8px 20px rgba(0,0,0,0.3))}
105 @media (max-width:900px){.goflow-container{grid-template-columns:1fr;text-align:center}.goflow-features{text-align:left;max-width:420px;margin:0 auto 30px}.goflow-buttons{justify-content:center}.goflow-content h2{font-size:2em}.goflow-demo{margin-top:24px}.goflow-demo-gopher{width:84px;left:-12px;bottom:-18px}} 106 @media (max-width:520px){.goflow-demo-gopher{display:none}} 107 108 .courses-section{background:#ffffff;padding:80px 0} 109 .section-head{text-align:center;max-width:640px;margin:0 auto 48px} 110 .section-head h2{font-size:2.5em;font-weight:700;margin:14px 0 12px} 111 .section-head p{font-size:1.15em;line-height:1.6;color:#4B5563;text-wrap:pretty} 112 .course-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px} 113 .course-card{background:#fff;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,0.08);overflow:hidden;display:flex;flex-direction:column;text-decoration:none;color:inherit;transition:transform 0.3s,box-shadow 0.3s} 114 .course-card:hover{transform:translateY(-5px);box-shadow:0 8px 25px rgba(0,0,0,0.15);color:inherit} 115 .course-card img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block} 116 .course-card-body{padding:20px;display:flex;flex-direction:column;flex:1;gap:8px} 117 .course-card h3{font-size:1.15em;line-height:1.35} 118 .course-card-meta{font-size:0.85em;color:#6B7280} 119 .course-card-link{margin-top:auto;padding-top:8px;color:#3B82F6;font-weight:bold;font-size:0.95em} 120 .course-card:hover .course-card-link{color:#2563EB} 121 .course-card-badges{display:flex;gap:8px} 122 .courses-cta{text-align:center;margin-top:44px} 123 .courses-cta a{font-weight:bold;font-size:1.1em;text-decoration:none} 124 @media (max-width:1000px){.course-grid{grid-template-columns:repeat(2,1fr)}} 125 @media (max-width:600px){.course-grid{grid-template-columns:1fr}} 126 127 .jobs-hero{background:#111827;padding:80px 24px;border-top:3px solid #3B82F6} 128 .jobs-hero-container{max-width:700px;margin:0 auto;text-align:center} 129 .jobs-hero h2{font-size:2.4em;font-weight:700;color:#ffffff;margin:16px 0 12px;line-height:1.2} 130 .jobs-hero p{font-size:1.1em;color:#9CA3AF;margin:0 0 28px;line-height:1.6} 131 .jobs-hero-logos{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:32px} 132 .jobs-hero-logos img{width:32px;height:32px;border-radius:8px;border:2px solid #374151;background:#1f2937;opacity:0.9} 133 .jobs-hero-logos-more{font-size:14px;font-weight:600;color:#6B7280;margin-left:4px} 134 .jobs-hero-form{display:flex;flex-direction:column;align-items:center;gap:12px} 135 .jobs-hero-form form{display:flex;gap:10px;width:100%;max-width:480px} 136 .jobs-hero-form input[type="email"]{flex:1;padding:14px 16px;font-size:15px;border:1px solid #374151;border-radius:8px;background:#1f2937;color:#fff;font-family:'Roboto',sans-serif} 137 .jobs-hero-form input[type="email"]::placeholder{color:#6B7280} 138 .jobs-hero-form input[type="email"]:focus{outline:none;border-color:#3B82F6;box-shadow:0 0 0 2px rgba(59,130,246,0.25)} 139 .jobs-hero-form button{padding:14px 24px;font-size:15px;font-weight:700;font-family:'Roboto',sans-serif;background:#3B82F6;color:#fff;border:none;border-radius:8px;cursor:pointer;white-space:nowrap;transition:all 0.2s} 140 .jobs-hero-form button:hover{background:#2563EB;transform:translateY(-1px);box-shadow:0 4px 12px rgba(59,130,246,0.3)} 141 .jobs-hero-social{font-size:13px;color:#6B7280} 142 @media (max-width:768px){.jobs-hero{padding:56px 20px}.jobs-hero h2{font-size:1.8em}.jobs-hero-form form{flex-direction:column}} 143 144 .resources-section{padding:80px 24px;background-color:#f0f7ff;color:#4B5563;text-align:left} 145 .resources-head{max-width:1200px;margin:0 auto 36px;display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap} 146 .resources-head h2{font-size:2.5em;font-weight:700;color:#111827;margin:14px 0 0} 147 .resources-head-cta{font-weight:bold;font-size:1.05em;text-decoration:none;white-space:nowrap;padding-bottom:6px} 148 .featured-resource{display:block;max-width:1200px;margin:0 auto 30px;text-decoration:none;color:inherit} 149 .featured-resource:hover{color:inherit} 150 .featured-resource-inner{display:flex;align-items:center;gap:36px;background:linear-gradient(135deg,#111827 0%,#1f2937 100%);border-radius:12px;padding:36px 40px;box-shadow:0 4px 15px rgba(0,0,0,0.15);transition:transform 0.3s,box-shadow 0.3s;position:relative;overflow:hidden} 151 .featured-resource-inner::before{content:'';position:absolute;top:-60%;right:-10%;width:50%;height:220%;background:radial-gradient(ellipse,rgba(59,130,246,0.15) 0%,transparent 70%);pointer-events:none} 152 .featured-resource:hover .featured-resource-inner{transform:translateY(-3px);box-shadow:0 8px 25px rgba(0,0,0,0.2)}
153 .featured-resource-img{width:200px;height:auto;border-radius:8px;flex-shrink:0;position:relative} 154 .featured-resource-text{position:relative} 155 .featured-resource-text h3{font-size:1.8em;color:#ffffff;margin:12px 0;line-height:1.25;text-wrap:pretty} 156 .featured-resource-text p{font-size:1em;color:#E5E7EB;line-height:1.6;margin:0 0 18px;max-width:44em} 157 .featured-resource-link{color:#3B82F6;font-weight:bold} 158 .featured-resource:hover .featured-resource-link{color:#60A5FA} 159 @media (max-width:768px){.featured-resource-inner{flex-direction:column;text-align:center;padding:28px}.featured-resource-img{width:140px}.featured-resource-text h3{font-size:1.35em}} 160 .blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;max-width:1200px;margin:0 auto} 161 .blog-card{background:white;border-radius:8px;padding:26px;box-shadow:0 2px 8px rgba(0,0,0,0.08);transition:transform 0.3s,box-shadow 0.3s;display:flex;flex-direction:column;text-decoration:none;color:inherit} 162 .blog-card:hover{transform:translateY(-5px);box-shadow:0 8px 25px rgba(0,0,0,0.15);color:inherit} 163 .blog-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px} 164 .blog-tag{display:inline-block;background:rgba(59,130,246,0.1);color:#2563EB;padding:4px 10px;border-radius:4px;font-size:10.5px;font-weight:700;letter-spacing:0.5px;text-transform:uppercase} 165 .blog-date{color:#6B7280;font-size:0.85em;font-weight:500;white-space:nowrap} 166 .blog-card h3{font-size:1.25em;color:#111827;margin:10px 0;line-height:1.35;text-wrap:pretty} 167 .blog-card p{color:#4B5563;font-size:0.95em;line-height:1.6;margin-bottom:18px} 168 .blog-link{color:#3B82F6;font-weight:bold;font-size:0.95em;transition:color 0.3s;margin-top:auto} 169 .blog-card:hover .blog-link{color:#2563EB} 170 .resources-foot{max-width:1200px;margin:40px auto 0;text-align:center} 171 .blog-grid-cta{display:inline-block;background:linear-gradient(to right,#3B82F6,#2563EB);color:#fff;padding:15px 40px;border-radius:8px;font-size:1.1em;font-weight:bold;text-decoration:none;box-shadow:0 4px 15px rgba(59,130,246,0.3);transition:transform 0.3s,box-shadow 0.3s} 172 .blog-grid-cta:hover{color:#fff;transform:translateY(-2px);box-shadow:0 6px 20px rgba(59,130,246,0.4)} 173 @media (max-width:1000px){.blog-grid{grid-template-columns:repeat(2,1fr)}} 174 @media (max-width:640px){.blog-grid{grid-template-columns:1fr}.blog-card{padding:20px}.resources-head{flex-direction:column;align-items:flex-start}} 175 </style> 176</head> 177 178<body><a href="https://www.bytesizego.com/cdn-cgi/content?id=GtWXwdb.f.nOh0Fah1wt4ezFwL9drDWadgKz8L5Us2E-1790346174.8570576-1.2.1.1-U_Q.uAbhSG9URLzi3rgx8z2H1nTiOIfoLItztwquLraH.HmaDD9dg3gcMq0O9tdz" aria-hidden="true" rel="nofollow noopener" style="display: none !important; visibility: hidden !important"></a> 179 180 <header> 181 <style> 182 183 * { 184 margin: 0; 185 padding: 0; 186 box-sizing: border-box; 187 } 188 189 190 header { 191 width: 100%; 192 } 193 194 nav { 195 width: 100%; 196 display: flex; 197 justify-content: space-between; 198 align-items: center; 199 background-color: #111827; 200 padding: 1em 3em; 201 } 202 203 .logo { 204 max-height: 35px; 205 } 206 207 .nav-links { 208 list-style: none; 209 display: flex; 210 gap: 2em; 211 } 212 213 .nav-links a { 214 color: #ffffff; 215 text-decoration: none; 216 font-weight: bold; 217 font-size: 1.05em; 218 position: relative; 219 } 220 221 .nav-links a:hover { 222 color: #9CA3AF; 223 } 224 225 @keyframes pulse-dot { 226 0% { transform: scale(1); opacity: 1; } 227 50% { transform: scale(1.4); opacity: 0.7; } 228 100% { transform: scale(1); opacity: 1; } 229 } 230 231 232 .login-button { 233 padding: 0.7em 1.5em; 234 font-size: 1.05em; 235 font-weight: bold; 236 background-color: #3B82F6; 237 color: #ffffff; 238 border: none; 239 border-radius: 8px; 240 cursor: pointer; 241 transition: all 0.2s ease; 242 } 243 244 .login-button:hover { 245 background-color: #2563EB; 246 transform: translateY(-1px); 247 box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3); 248 } 249 250 #login-container { 251 display: flex; 252 align-items: center; 253 } 254 255 256 .account-dropdown { 257 position: relative; 258 } 259 260 .account-dropdown-toggle { 261 color: #ffffff; 262 font-weight: bold; 263 font-size: 1.1em; 264 cursor: pointer; 265 background: none; 266 border: 1px solid rgba(255, 255, 255, 0.3); 267 border-radius: 6px; 268 padding: 0.5em 1em; 269 display: flex; 270 align-items: center; 271 gap: 0.4em; 272 transition: background-color 0.2s ease; 273 } 274 275 .account-dropdown-toggle:hover { 276 background-color: rgba(255, 255, 255, 0.1); 277 } 278 279 .account-dropdown-toggle .arrow { 280 font-size: 0.7em; 281 transition: transform 0.2s ease; 282 } 283 284 .account-dropdown.open .account-dropdown-toggle .arrow { 285 transform: rotate(180deg); 286 } 287 288 .account-dropdown-menu { 289 display: none; 290 position: absolute; 291 top: calc(100% + 0.5em); 292 right: 0; 293 background-color: #1f2937; 294 border-radius: 8px; 295 padding: 0.5em 0; 296 min-width: 200px; 297 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); 298 z-index: 100; 299 } 300 301 .account-dropdown.open .account-dropdown-menu { 302 display: block; 303 } 304 305 .account-dropdown-menu a { 306 display: block; 307 color: #ffffff; 308 text-decoration: none; 309 padding: 0.6em 1.2em; 310 font-size: 0.95em; 311 transition: background-color 0.15s ease; 312 } 313 314 .account-dropdown-menu a:hover { 315 background-color: rgba(255, 255, 255, 0.1); 316 } 317 318 .account-dropdown-menu hr { 319 border: none; 320 border-top: 1px solid rgba(255, 255, 255, 0.15); 321 margin: 0.3em 0; 322 } 323 324 325 .hamburger { 326 display: none; 327 width: 44px; 328 height: 44px; 329 padding: 0; 330 align-items: center; 331 justify-content: center; 332 color: #ffffff; 333 cursor: pointer; 334 background: none; 335 border: none; 336 border-radius: 8px; 337 transition: background-color 0.2s ease; 338 } 339 340 .hamburger:hover, 341 .hamburger:focus-visible { 342 background-color: rgba(255, 255, 255, 0.1); 343 } 344 345 .hamburger:focus-visible, 346 .close-icon:focus-visible, 347 .mobile-menu-link:focus-visible { 348 outline: 2px solid #10B981; 349 outline-offset: 2px; 350 } 351 352 .hamburger svg { 353 width: 24px; 354 height: 24px; 355 fill: none; 356 stroke: currentColor; 357 stroke-linecap: round; 358 stroke-width: 2; 359 } 360 361 @media (max-width: 1100px) { 362 .hamburger { 363 display: flex; 364 } 365 366 .nav-links, 367 #login-container, 368 .account-dropdown { 369 display: none; 370 } 371 } 372 373 374 .menu-overlay { 375 display: flex; 376 position: fixed; 377 top: 0; 378 right: 0; 379 bottom: 0; 380 left: 0; 381 background-color: rgba(0, 0, 0, 0.5); 382 z-index: 1000; 383 justify-content: flex-end; 384 align-items: flex-start; 385 padding: calc(4.5rem + env(safe-area-inset-top)) 1rem calc(1rem + env(safe-area-inset-bottom)); 386 opacity: 0; 387 visibility: hidden; 388 pointer-events: none; 389 transition: opacity 0.2s ease, visibility 0.2s ease; 390 } 391 392 .menu-overlay.is-open { 393 opacity: 1; 394 visibility: visible; 395 pointer-events: auto; 396 } 397 398 .menu-content { 399 position: relative; 400 background-color: #ffffff; 401 border: 1px solid #E5E7EB; 402 border-radius: 22px; 403 padding: 0.75rem; 404 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); 405 width: min(100%, 420px); 406 max-height: calc(100dvh - 5.5rem); 407 overflow-y: auto; 408 opacity: 0; 409 transform: translateY(-8px) scale(0.98); 410 transform-origin: top right; 411 transition: opacity 0.2s ease, transform 0.2s ease; 412 } 413 414 .menu-overlay.is-open .menu-content { 415 opacity: 1; 416 transform: translateY(0) scale(1); 417 } 418 419 .menu-header { 420 display: flex; 421 justify-content: flex-end; 422 margin-bottom: 0.15rem; 423 } 424 425 .menu-content ul { 426 list-style: none; 427 padding: 0; 428 margin: 0; 429 } 430 431 .menu-content ul li { 432 margin: 0; 433 } 434 435 .menu-content a.mobile-menu-link { 436 display: flex; 437 align-items: center; 438 gap: 0.75rem; 439 width: 100%; 440 min-height: 48px; 441 padding: 0.35rem 0; 442 border-bottom: 1px solid #E5E7EB; 443 color: #111827; 444 text-decoration: none; 445 font-size: 1rem; 446 font-weight: bold; 447 margin-left: 0; 448 } 449 450 .menu-content a.mobile-menu-link:hover { 451 color: #111827; 452 } 453 454 .menu-icon-wrap { 455 display: inline-flex; 456 flex: 0 0 36px; 457 width: 36px; 458 height: 36px; 459 align-items: center; 460 justify-content: center; 461 color: #111827; 462 background-color: #F9FAFB; 463 border: 1px solid #E5E7EB; 464 border-radius: 10px; 465 } 466 467 .mobile-menu-link:hover .menu-icon-wrap { 468 color: #ffffff; 469 background-color: #1f2937; 470 border-color: #1f2937; 471 } 472 473 .menu-icon-wrap svg {
474 width: 20px; 475 height: 20px; 476 fill: none; 477 stroke: currentColor; 478 stroke-linecap: round; 479 stroke-linejoin: round; 480 stroke-width: 1.8; 481 } 482 483 .mobile-menu-label { 484 flex: 1; 485 } 486 487 .mobile-menu-account { 488 margin-top: 0.5rem; 489 padding-top: 0.5rem; 490 border-top: 1px solid #E5E7EB; 491 } 492 493 .mobile-menu-account > li:last-child .mobile-menu-link, 494 .mobile-menu-list > li:last-child .mobile-menu-link { 495 border-bottom: none; 496 } 497 498 .menu-content a.mobile-menu-action { 499 min-height: 48px; 500 margin-top: 0.5rem; 501 padding: 0.6rem 1rem; 502 color: #ffffff; 503 background-color: #111827; 504 border: none; 505 border-radius: 14px; 506 } 507 508 .menu-content a.mobile-menu-action:hover { 509 color: #ffffff; 510 background-color: #1f2937; 511 } 512 513 .mobile-menu-action .menu-icon-wrap { 514 flex-basis: 32px; 515 width: 32px; 516 height: 32px; 517 color: #10B981; 518 background: none; 519 border: none; 520 animation: none !important; 521 transition: none !important; 522 transform: none !important; 523 } 524 525 .mobile-menu-action:hover .menu-icon-wrap { 526 color: #10B981; 527 background: none; 528 border: none; 529 } 530 531 .mobile-menu-arrow { 532 color: #10B981; 533 font-size: 1.5rem; 534 line-height: 1; 535 animation: none !important; 536 transition: none !important; 537 transform: none !important; 538 } 539 540 .close-icon { 541 position: relative; 542 display: inline-flex; 543 width: 36px; 544 height: 36px; 545 align-items: center; 546 justify-content: center; 547 cursor: pointer; 548 color: #111827; 549 background-color: #F9FAFB; 550 border: 1px solid #E5E7EB; 551 border-radius: 999px; 552 } 553 554 .close-icon:hover { 555 background-color: #E5E7EB; 556 } 557 558 .close-icon::before, 559 .close-icon::after { 560 position: absolute; 561 width: 17px; 562 height: 2px; 563 content: ""; 564 background-color: #111827; 565 border-radius: 999px; 566 } 567 568 .close-icon::before { 569 transform: rotate(45deg); 570 } 571 572 .close-icon::after { 573 transform: rotate(-45deg); 574 } 575 576 @media (prefers-reduced-motion: reduce) { 577 .menu-overlay, 578 .menu-content, 579 .mobile-menu-link, 580 .menu-icon-wrap, 581 .close-icon { 582 transition: none; 583 } 584 } 585 </style> 586 587 <nav> 588 589 <a href="/"> 590 <img src="/static/img/logo.png" alt="ByteSizeGo Logo" class="logo"> 591 </a> 592 593 594 <ul class="nav-links"> 595 596 <li><a href="/goflow-landing">GoFlow</a></li> 597 598 <li><a href="/blog">Blog</a></li> 599 <li><a href="/books">Books</a></li> 600 <li><a href="/courses">Courses</a></li> 601 602 <li> 603 <a href="/lessons">Lessons</a> 604 </li> 605 606 <li><a href="/golang-jobs">Golang Jobs</a></li> 607 </ul> 608 609 610 611 612 <div id="login-container"> 613 <a href="/login"> 614 <button class="login-button">Login</button> 615 </a> 616 </div> 617 618 619 620 <button class="hamburger" id="mobile-menu-toggle" type="button" aria-label="Open navigation menu" 621 aria-controls="menu-overlay" aria-expanded="false"> 622 <svg viewBox="0 0 24 24" aria-hidden="true"> 623 <path d="M4 7h16M4 12h16M4 17h16"></path> 624 </svg> 625 </button> 626 </nav> 627 628 629 <div class="menu-overlay" id="menu-overlay" aria-hidden="true"> 630 <div class="menu-content" role="dialog" aria-modal="true" aria-label="Site navigation"> 631 <div class="menu-header"> 632 <button class="close-icon" id="mobile-menu-close" type="button" aria-label="Close navigation menu"></button> 633 </div> 634 <ul class="mobile-menu-list"> 635 636 <li> 637 <a class="mobile-menu-link" href="/goflow-landing">
638 <span class="menu-icon-wrap" aria-hidden="true"> 639 <svg viewBox="0 0 24 24"> 640 <circle cx="5" cy="17" r="2"></circle> 641 <circle cx="19" cy="7" r="2"></circle> 642 <circle cx="19" cy="17" r="2"></circle> 643 <path d="M7 17h3a3 3 0 0 0 3-3v-4a3 3 0 0 1 3-3h1M13 13h4"></path> 644 </svg> 645 </span> 646 <span class="mobile-menu-label">GoFlow</span> 647 </a> 648 </li> 649 <li> 650 <a class="mobile-menu-link" href="/blog"> 651 <span class="menu-icon-wrap" aria-hidden="true"> 652 <svg viewBox="0 0 24 24"> 653 <path d="M7 3h7l4 4v14H7z"></path> 654 <path d="M14 3v5h4M10 12h5M10 16h5"></path> 655 </svg> 656 </span> 657 <span class="mobile-menu-label">Blog</span> 658 </a> 659 </li> 660 <li> 661 <a class="mobile-menu-link" href="/books"> 662 <span class="menu-icon-wrap" aria-hidden="true"> 663 <svg viewBox="0 0 24 24"> 664 <path d="M3 5.5A3.5 3.5 0 0 1 6.5 2H11v17H6.5A3.5 3.5 0 0 0 3 22z"></path> 665 <path d="M21 5.5A3.5 3.5 0 0 0 17.5 2H13v17h4.5A3.5 3.5 0 0 1 21 22z"></path> 666 </svg> 667 </span> 668 <span class="mobile-menu-label">Books</span> 669 </a> 670 </li> 671 <li> 672 <a class="mobile-menu-link" href="/courses"> 673 <span class="menu-icon-wrap" aria-hidden="true"> 674 <svg viewBox="0 0 24 24"> 675 <path d="m3 9 9-5 9 5-9 5z"></path> 676 <path d="M7 12v5l5 3 5-3v-5M21 9v6"></path> 677 </svg> 678 </span> 679 <span class="mobile-menu-label">Courses</span> 680 </a> 681 </li> 682 683 <li> 684 <a class="mobile-menu-link" href="/lessons"> 685 <span class="menu-icon-wrap" aria-hidden="true"> 686 <svg viewBox="0 0 24 24"> 687 <rect x="3" y="4" width="18" height="16" rx="2"></rect> 688 <path d="m10 9 5 3-5 3z"></path> 689 </svg> 690 </span> 691 <span class="mobile-menu-label">Lessons</span> 692 </a> 693 </li> 694 695 <li> 696 <a class="mobile-menu-link" href="/golang-jobs"> 697 <span class="menu-icon-wrap" aria-hidden="true"> 698 <svg viewBox="0 0 24 24"> 699 <rect x="3" y="7" width="18" height="13" rx="2"></rect> 700 <path d="M8 7V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M3 12h18M10 12v2h4v-2"></path> 701 </svg> 702 </span> 703 <span class="mobile-menu-label">Golang Jobs</span> 704 </a> 705 </li> 706 </ul> 707 708 <ul class="mobile-menu-account"> 709 710 <li> 711 <a class="mobile-menu-link mobile-menu-action" href="/login"> 712 <span class="menu-icon-wrap" aria-hidden="true"> 713 <svg viewBox="0 0 24 24"> 714 <circle cx="12" cy="8" r="3"></circle> 715 <path d="M6 20c0-3.5 2.5-6 6-6s6 2.5 6 6"></path> 716 </svg> 717 </span>
718 <span class="mobile-menu-label">Login</span> 719 <span class="mobile-menu-arrow" aria-hidden="true">â</span> 720 </a> 721 </li> 722 723 </ul> 724 </div> 725 </div> 726 727
727<script> 728 function toggleAccountDropdown(event) { 729 event.stopPropagation(); 730 var dropdown = document.getElementById('account-dropdown'); 731 if (dropdown) { dropdown.classList.toggle('open'); } 732 } 733 document.addEventListener('click', function(event) { 734 var dropdown = document.getElementById('account-dropdown'); 735 if (dropdown && !dropdown.contains(event.target)) { 736 dropdown.classList.remove('open'); 737 } 738 }); 739 </script>
739 740
740<script src="/static/js/script.js?v=6"></script>
740 741
741<script src="https://fast.bentonow.com?site_uuid=77ba1068153ffaf18360acbab277ce23" async defer></script>
741 742 </header> 743 744 745 746 <section class="hero"> 747 <div class="container"> 748 <span class="hero-badge">Join 5,000+ Go developers</span> 749 <h1>The best place to learn <em>Go</em> on the internet</h1> 750 <p class="hero-sub">Bite-sized lessons, deep courses, and a gamified practice app â everything you need to 751 go from "Hello, World" to production systems.</p> 752 <div class="hero-form-wrap"> 753 <img src="/static/img/gopher-mascot.png" alt="ByteSizeGo gopher mascot" class="hero-gopher"> 754 <form class="hero-form bento-capture" 755 action="https://track.bentonow.com/forms/77ba1068153ffaf18360acbab277ce23/subscribe_jobs?hardened=true" 756 method="POST"> 757 <input type="hidden" name="redirect" value="https://bytesizego.com/thank-you"> 758 <input type="email" name="email" placeholder="Enter your email" required 759 pattern="[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,}$"> 760 <button type="submit">Start Learning Free</button> 761 </form> 762 </div> 763 <span class="hero-note">One useful email at a time â no spam, unsubscribe anytime.</span> 764 <div class="hero-stats"> 765 <div class="hero-stat"><strong>176+</strong><span>interactive exercises</span></div> 766 <div class="hero-stat"><strong>236</strong><span>free blog posts</span></div> 767 <div class="hero-stat"><strong>30+</strong><span>hours of courses</span></div> 768 </div> 769 </div> 770 </section> 771 772 773 <section class="goflow-section"> 774 <div class="container goflow-container"> 775 <div class="goflow-content"> 776 <span class="badge badge-amber">New</span> 777 <h2>Learn Go the Fun Way with GoFlow</h2> 778 <p>Master Go through bite-sized, interactive exercises. Earn XP, build streaks, and level up your 779 skills â one lesson at a time.</p> 780 <ul class="goflow-features"> 781 <li>176+ interactive exercises you can finish in minutes</li> 782 <li>Earn XP, keep daily streaks, and level up your gopher</li> 783 <li>Real Go code from day one â no setup required</li> 784 </ul> 785 <div class="goflow-buttons"> 786 <a href="/goflow-landing"><button class="goflow-cta-button">Start Learning Free</button></a> 787 <span class="goflow-free">Free to start â no card required</span> 788 </div> 789 </div> 790 <div class="goflow-demo"> 791 <span class="goflow-xp">+10 XP</span> 792 <div class="goflow-app"> 793 <div class="goflow-app-top"> 794 <div class="goflow-pills"><span class="goflow-pill">ð¥ 7</span><span class="goflow-pill">â¡ 240 795 XP</span></div> 796 <span class="goflow-pill">â¤ï¸ 5</span> 797 </div> 798 <div class="goflow-progress"><span></span></div> 799 <div class="goflow-q">Fill in the blank</div> 800 <div class="goflow-code"><span class="kw">func</span> main() { 801 msg := <span class="st">"Hello, Gopher!"</span> 802 <span class="blank">fmt.Println</span>(msg) 803}</div> 804 <div class="goflow-choices"><span class="goflow-choice picked">fmt.Println</span><span 805 class="goflow-choice">log.Fatal</span><span class="goflow-choice">print()</span></div> 806 <button class="goflow-check">Check Answer</button> 807 </div> 808 <img src="/static/img/goflow-gopher.png" alt="GoFlow Gopher Mascot" class="goflow-demo-gopher"> 809 </div> 810 </div> 811 </section> 812 813 814 <section class="courses-section"> 815 <div class="container"> 816 <div class="section-head"> 817 <span class="badge badge-blue">Courses</span> 818 <h2>Go deep, one course at a time</h2> 819 <p>Production-focused video courses used by engineers at some of the biggest companies in the world.</p> 820 </div> 821 <div class="course-grid"> 822 <a href="/courses/ai-engineering-with-go" class="course-card"> 823 <img src="/static/img/ai-engineering-course.webp" alt="AI Engineering with Go"> 824 <div class="course-card-body"> 825 <div class="course-card-badges"><span class="badge">New</span><span 826 class="badge badge-amber">$99</span></div> 827 <h3>AI Engineering with Go</h3>
828 <span class="course-card-meta">43 Lessons ⢠13+ Hours</span> 829 <span class="course-card-link">Learn More â</span> 830 </div> 831 </a> 832 <a href="/courses/grpc-with-go" class="course-card"> 833 <img src="/static/img/course_grpc.webp" alt="Building Production-Ready Services with gRPC and Go"> 834 <div class="course-card-body"> 835 <div class="course-card-badges"><span class="badge badge-amber">$99</span></div> 836 <h3>Building Production-Ready Services with gRPC and Go</h3> 837 <span class="course-card-meta">11+ Hours</span> 838 <span class="course-card-link">Learn More â</span> 839 </div> 840 </a> 841 <a href="/courses/the-ultimate-guide-to-debugging-with-go" class="course-card"> 842 <img src="/static/img/course_debug.webp" alt="The Ultimate Guide to Debugging with Go"> 843 <div class="course-card-body"> 844 <div class="course-card-badges"><span class="badge badge-amber">$99</span></div> 845 <h3>The Ultimate Guide to Debugging with Go</h3> 846 <span class="course-card-meta">50 Lessons</span> 847 <span class="course-card-link">Learn More â</span> 848 </div> 849 </a> 850 <a href="/courses/go-1-23-in-23-minutes" class="course-card"> 851 <img src="/static/img/course_go_123.webp" alt="Go 1.23 in 23 minutes"> 852 <div class="course-card-body"> 853 <div class="course-card-badges"><span class="badge">Free</span></div> 854 <h3>Go 1.23 in 23 minutes</h3> 855 <span class="course-card-meta">6 Lessons ⢠23 Minutes</span> 856 <span class="course-card-link">Learn More â</span> 857 </div> 858 </a> 859 </div> 860 <div class="courses-cta"><a href="/courses">View all courses â</a></div> 861 </div> 862 </section> 863 864 865 <section class="jobs-hero"> 866 <div class="jobs-hero-container"> 867 <span class="badge badge-blue">Free List</span> 868 <h2>58 Companies Hiring Go Engineers in 2026</h2> 869 <p>Careers pages, remote policies, and how each company uses Go in production.</p> 870 <div class="jobs-hero-logos"> 871 <img src="/static/img/logos/google.png" alt="Google"> 872 <img src="/static/img/logos/cloudflare.png" alt="Cloudflare"> 873 <img src="/static/img/logos/docker.png" alt="Docker"> 874 <img src="/static/img/logos/shopify.png" alt="Shopify"> 875 <img src="/static/img/logos/datadog.png" alt="Datadog"> 876 <img src="/static/img/logos/hashicorp.png" alt="HashiCorp"> 877 <span class="jobs-hero-logos-more">+52</span> 878 </div> 879 <div class="jobs-hero-form"> 880 <form class="bento-capture" 881 action="https://track.bentonow.com/forms/77ba1068153ffaf18360acbab277ce23/subscribe_jobs?hardened=true" 882 method="POST"> 883 <input type="hidden" name="redirect" value="https://bytesizego.com/thank-you"> 884 <input type="email" name="email" placeholder="Enter your email" required 885 pattern="[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,}$"> 886 <button type="submit">Send Me the Free List</button> 887 </form> 888 <span class="jobs-hero-social">Join 5,000+ Go developers</span> 889 </div> 890 </div> 891 </section> 892 893 894 <section class="resources-section"> 895 <div class="resources-head"> 896 <div> 897 <span class="badge badge-blue">Blog</span> 898 <h2>Latest from the blog</h2> 899 </div> 900 <a href="/blog" class="resources-head-cta">Read all 236 posts â</a> 901 </div> 902 <a href="/blog/learning-golang-2026" class="featured-resource"> 903 <div class="featured-resource-inner"> 904 <img src="/static/img/jr_to_snr.webp" alt="Learning Go in 2026" class="featured-resource-img"> 905 <div class="featured-resource-text">
906 <span class="badge badge-blue">Learning Path</span> 907 <h3>Learning Go in 2026; from beginner to senior</h3> 908 <p>A curated guide of all the best content to help you advance your Go journey â from your first 909 "Hello, World" to production systems.</p> 910 <span class="featured-resource-link">Read Free Now â</span> 911 </div> 912 </div> 913 </a> 914 <div class="blog-grid"> 915 916 <a class="blog-card" href="/blog/how-io-reader-and-io-writer-keep-go-apis-composable"> 917 <div class="blog-card-top"><span class="blog-tag">getting started with go</span><span class="blog-date">Sep 20, 2026</span></div> 918 <h3>How io.Reader and io.Writer Keep Go APIs Composable</h3> 919 <p>Partial reads, EOF handling, io.Copy's fast paths, TeeReader and MultiWriter, buffering, and testing streams.</p> 920 <span class="blog-link">Read More â</span> 921 </a> 922 <a class="blog-card" href="/blog/table-driven-tests-in-go-subtests-parallelism-and-keeping-th"> 923 <div class="blog-card-top"><span class="blog-tag">best practises</span><span class="blog-date">Sep 19, 2026</span></div> 924 <h3>Table-Driven Tests in Go: Subtests, Parallelism, and Keeping the Table Readable</h3> 925 <p>Structuring Go table tests so failures tell you which case broke: t.Run naming, parallel subtests, t.Helper, golden files, and the point where a plain test function wins.</p> 926 <span class="blog-link">Read More â</span> 927 </a> 928 <a class="blog-card" href="/blog/go-1-27-generic-methods-encoding-json-v2-and-what-actually-c"> 929 <div class="blog-card-top"><span class="blog-tag">advanced topics</span><span class="blog-date">Sep 18, 2026</span></div> 930 <h3>Go 1.27: Generic Methods, encoding/json/v2, and What Actually Changes in Your Code</h3> 931 <p>Generic methods, nested struct literal keys, encoding/json/v2, a uuid package, cheaper small allocations. What to use, what to test before you ship the upgrade.</p> 932 <span class="blog-link">Read More â</span> 933 </a> 934 <a class="blog-card" href="/blog/go-build-constraints-go-build-syntax-filename-suffixes-and-c"> 935 <div class="blog-card-top"><span class="blog-tag">advanced topics</span><span class="blog-date">Sep 16, 2026</span></div> 936 <h3>Go Build Constraints: //go:build Syntax, Filename Suffixes, and Custom Tags</h3> 937 <p>How go:build expressions and filename suffixes decide which Go files compile, plus custom tags, cgo constraints, and testing across platforms.</p> 938 <span class="blog-link">Read More â</span> 939 </a> 940 <a class="blog-card" href="/blog/testing-http-handlers-in-go-with-httptest-recorders-servers"> 941 <div class="blog-card-top"><span class="blog-tag">best practises</span><span class="blog-date">Sep 15, 2026</span></div> 942 <h3>Testing HTTP Handlers in Go with httptest: Recorders, Servers, and Table Tests</h3> 943 <p>Testing Go HTTP handlers with httptest.ResponseRecorder and httptest.NewServer: JSON bodies, headers, middleware, failure paths, and the mistakes that make tests hang.</p> 944 <span class="blog-link">Read More â</span> 945 </a> 946 <a class="blog-card" href="/blog/structured-logging-in-go-with-log-slog-levels-attrs-groups-a"> 947 <div class="blog-card-top"><span class="blog-tag">advanced topics</span><span class="blog-date">Sep 14, 2026</span></div> 948 <h3>Structured Logging in Go with log/slog: Levels, Attrs, Groups, and Handlers</h3> 949 <p>How to configure log/slog in a real service: runtime-switchable levels, attrs and groups, context-aware handlers, source locations, and the allocation traps.</p> 950 <span class="blog-link">Read More â</span> 951 </a> 952 953 </div> 954 <div class="resources-foot"><a href="/blog" class="blog-grid-cta">Read all 236 blog posts â</a></div> 955 </section> 956 957 958 <style> 959 .site-footer{background:#111827;color:#9CA3AF;padding:56px 24px 32px;font-family:'Roboto',sans-serif} 960 .footer-grid{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;gap:48px;flex-wrap:wrap} 961 .footer-brand img{max-height:32px;margin-bottom:14px} 962 .footer-brand p{font-size:0.95em;line-height:1.6;max-width:26em;color:#9CA3AF} 963 .footer-nav{display:flex;gap:64px;flex-wrap:wrap} 964 .footer-nav h4{color:#ffffff;font-size:0.85em;text-transform:uppercase;letter-spacing:0.5px;margin-bottom:14px} 965 .footer-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px} 966 .footer-nav a{color:#9CA3AF;text-decoration:none;font-size:0.95em;transition:color 0.2s} 967 .footer-nav a:hover{color:#ffffff} 968 .footer-legal{max-width:1200px;margin:40px auto 0;padding-top:24px;border-top:1px solid #374151;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:0.85em} 969 .footer-legal a{color:#6B7280;text-decoration:none;margin-right:16px} 970 .footer-legal a:hover{color:#9CA3AF} 971 </style> 972 <footer class="site-footer"> 973 <div class="footer-grid"> 974 <div class="footer-brand"> 975 <img src="/static/img/logo.png" alt="ByteSizeGo"> 976 <p>The best place to learn the Go programming language on the internet.</p> 977 </div> 978 <div class="footer-nav"> 979 <div> 980 <h4>Learn</h4> 981 <ul> 982 <li><a href="/goflow-landing">GoFlow</a></li> 983 <li><a href="/courses">Courses</a></li> 984 <li><a href="/lessons">Lessons</a></li> 985 <li><a href="/books">Books</a></li> 986 </ul> 987 </div> 988 <div> 989 <h4>Resources</h4> 990 <ul> 991 <li><a href="/blog">Blog</a></li> 992 <li><a href="/golang-jobs">Golang Jobs</a></li> 993 <li><a href="/blog/learning-golang-2026">Learning Path</a></li> 994 </ul> 995 </div> 996 </div> 997 </div> 998 <div class="footer-legal">
999 <span>© 2026 ByteSizeGo</span> 1000 <span> 1001 <a href="/terms">Terms of Service</a> 1002 <a href="/privacy">Privacy Policy</a> 1003 <a href="mailto:[email protected]?subject=Help%20request%20from%20ByteSizeGo">Contact Us</a> 1004 </span> 1005 </div> 1006 </footer> 1007 1008 1009
1009<script> 1010 document.addEventListener("DOMContentLoaded", function () { 1011 window.addEventListener("bento:ready", function () { 1012 bento.view(); 1013 }); 1014 1015 document.querySelectorAll("form.bento-capture").forEach(function (form) { 1016 form.addEventListener("submit", function (event) { 1017 if (typeof bento === "undefined") { 1018 return; 1019 } 1020 event.preventDefault(); 1021 const emailInput = form.querySelector('input[type="email"]'); 1022 const email = emailInput ? emailInput.value.trim() : null; 1023 1024 if (email) { 1025 bento.identify(email); 1026 } 1027 bento.track("form_submitted", { 1028 form_name: "bento-capture", 1029 page: "home", 1030 email_provided: !!email 1031 }); 1032 form.submit(); 1033 }); 1034 }); 1035 }); 1036 </script>
vendor: 1 bytes, line 1036
1036
1037<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"9c181ee3cb8e4f0da61bc7fb903ad4cb","r":1,"spa":2}' crossorigin="anonymous"></script>
1037 1038</body> 1039 1040</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.