{"version":1,"pages":[{"id":"-M5h01tQzc6tueB_j8Ph","title":"《Go语言基础》","pathname":"/essential-go","siteSpaceId":"sitesp_USRzD","description":"译者：阿驹(aju / denglj)，“驹说码事”公号/专栏作者。"},{"id":"-M5hJI6z2y6RdWjRclHV","title":"01 准备开始","pathname":"/essential-go/01-getting-started","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5hLsaEzjYjhEbolDA8","title":"Windows安装和设置","pathname":"/essential-go/01-getting-started/windows-install-and-setup","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"01 准备开始"}]},{"id":"-M5hMPFn3cQYsd0Ta9c0","title":"macOS安装和设置","pathname":"/essential-go/01-getting-started/mac-os-install-and-setup","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"01 准备开始"}]},{"id":"-M5hMTqALwLFFFKqrFqX","title":"Linux安装和设置","pathname":"/essential-go/01-getting-started/linux-install-and-setup","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"01 准备开始"}]},{"id":"-M5hMbJwV8I5pDyRhhs_","title":"Hello, World!","pathname":"/essential-go/01-getting-started/hello-world","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"01 准备开始"}]},{"id":"-M5hN4KJomDTWgKRFB7E","title":"来场有导游的Golang旅行","pathname":"/essential-go/01-getting-started/lai-chang-you-dao-you-de-golang-lv-hang","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"01 准备开始"}]},{"id":"-M5hNePsd2rAF64RIxdT","title":"离线访问文档","pathname":"/essential-go/01-getting-started/li-xian-fang-wen-wen-dang","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"01 准备开始"}]},{"id":"-M5hOAlt_Di1xM1HSei0","title":"在编程操场上运行Go","pathname":"/essential-go/01-getting-started/zai-xian-bian-cheng-cao-chang-shang-yun-hang-go","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"01 准备开始"}]},{"id":"-M5hOQ4YIV1kudGDqObS","title":"GOPATH, GOROOT, GOBIN","pathname":"/essential-go/01-getting-started/gopath-goroot-gobin","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"01 准备开始"}]},{"id":"-M5hQ5yQxWP84thul8dh","title":"02 基本类型","pathname":"/essential-go/02-basic-types","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5hVI1YR1hoqHKmSIks","title":"布尔型","pathname":"/essential-go/02-basic-types/booleans","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hVMwv_lzE3f3tpl41","title":"整型","pathname":"/essential-go/02-basic-types/integers","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hVPyAqY4vYq0lQsXl","title":"浮点数","pathname":"/essential-go/02-basic-types/floating-point-numbers","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hVTs0C-ek2ovY3yFf","title":"字符和符号(rune)","pathname":"/essential-go/02-basic-types/characters-and-runes","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hVduB0vQutreTcDiT","title":"字符串","pathname":"/essential-go/02-basic-types/strings","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hVi6WR3kzrzIDwGE7","title":"常量","pathname":"/essential-go/02-basic-types/constants","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hVnhcU8b1pmvjElIM","title":"枚举(不支持)","pathname":"/essential-go/02-basic-types/enums","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hVqT48F85W7FbvrNp","title":"数组","pathname":"/essential-go/02-basic-types/arrays","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hVyA528Vn5MnN-4qt","title":"切片","pathname":"/essential-go/02-basic-types/slices","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hW0FympTBIvgoQ6mT","title":"映射","pathname":"/essential-go/02-basic-types/ying-she","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hW4gb7xiS966DphWu","title":"结构体","pathname":"/essential-go/02-basic-types/jie-gou-ti","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hW96R0YcmPYSK5bxC","title":"接口","pathname":"/essential-go/02-basic-types/jie-kou","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hWCU5u2irMk51chvY","title":"空接口","pathname":"/essential-go/02-basic-types/kong-jie-kou","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hWGhQdlZ0O3ANFea5","title":"指针","pathname":"/essential-go/02-basic-types/zhi-zhen","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hWX9PJJ3TTGc4TDwz","title":"联合体(不支持)","pathname":"/essential-go/02-basic-types/lian-he-ti-bu-zhi-chi","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hWdWaLf66jpdSimx2","title":"数据通道","pathname":"/essential-go/02-basic-types/shu-ju-tong-dao","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hWqh1pS5Y_NC2X6Mv","title":"零值","pathname":"/essential-go/02-basic-types/ling-zhi","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hX4nDCe_Bq74QA_8z","title":"类型转换","pathname":"/essential-go/02-basic-types/lei-xing-zhuan-huan","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hXDX8jmxvfIOcQut2","title":"类型别名","pathname":"/essential-go/02-basic-types/lei-xing-bie-ming","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"02 基本类型"}]},{"id":"-M5hYi0JrwMNfj55TTbF","title":"03 变量(Variable)","pathname":"/essential-go/03-variables","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5hZ71NFJhHL6I5B7iP","title":"变量声明基本形式","pathname":"/essential-go/03-variables/basic-variable-declaration","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"03 变量(Variable)"}]},{"id":"-M5hZDkMcrHUzrxloKZE","title":"多个变量一起赋值","pathname":"/essential-go/03-variables/multiple-variable-assignment","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"03 变量(Variable)"}]},{"id":"-M5hZU2xaRT-dTm4-Tbg","title":"空白标识符","pathname":"/essential-go/03-variables/blank-identifier","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"03 变量(Variable)"}]},{"id":"-M5hZqH9-J8fUr_WM3ZL","title":"04 常量(Const)","pathname":"/essential-go/04-constants","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5h_6CQsrucJJO4fIoT","title":"有类型vs无类型常量","pathname":"/essential-go/04-constants/you-lei-xing-vs-wu-lei-xing-chang-liang","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"04 常量(Const)"}]},{"id":"-M5h_C3LxsJfCM-x8Lo6","title":"iota","pathname":"/essential-go/04-constants/iota","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"04 常量(Const)"}]},{"id":"-M5h_NanUugaNXk052jc","title":"模拟枚举","pathname":"/essential-go/04-constants/mo-ni-mei-ju","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"04 常量(Const)"}]},{"id":"-M5h_SBlWfM8UHuiu45B","title":"05 字符串(String)","pathname":"/essential-go/05-strings","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5h_WKLJyUiEV9UvaGi","title":"在字符串中查找另一字符串","pathname":"/essential-go/05-strings/zai-zi-fu-chuan-zhong-cha-zhao-ling-yi-zi-fu-chuan","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"05 字符串(String)"}]},{"id":"-M5h_hRetH0GP-ksTzqi","title":"字符串比较","pathname":"/essential-go/05-strings/zi-fu-chuan-bi-jiao","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"05 字符串(String)"}]},{"id":"-M5h_oOWOz3-pqd9ecbF","title":"大小写转换","pathname":"/essential-go/05-strings/da-xiao-xie-zhuan-huan","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"05 字符串(String)"}]},{"id":"-M5h_uuBVt_0lgofV9V_","title":"字符串转整型和浮点型","pathname":"/essential-go/05-strings/zi-fu-chuan-zhuan-zheng-xing-he-fu-dian-xing","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"05 字符串(String)"}]},{"id":"-M5ha5xLhfcq83N-PHeS","title":"字符串修剪(删除字符或子串)","pathname":"/essential-go/05-strings/zi-fu-chuan-xiu-jian-shan-chu-zi-fu-huo-zi-chuan","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"05 字符串(String)"}]},{"id":"-M5haEnumD77Biccdngv","title":"字符串文本替换","pathname":"/essential-go/05-strings/zi-fu-chuan-wen-ben-ti-huan","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"05 字符串(String)"}]},{"id":"-M5haTP2Wn_t1nfhyD_2","title":"字符串分割和连接","pathname":"/essential-go/05-strings/zi-fu-chuan-fen-ge-he-lian-jie","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"05 字符串(String)"}]},{"id":"-M5haXsbDrTKMLOOq4yA","title":"文本格式化","pathname":"/essential-go/05-strings/wen-ben-ge-shi-hua","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"05 字符串(String)"}]},{"id":"-M5hag-_RQq9N32oMNJK","title":"文本解析","pathname":"/essential-go/05-strings/wen-ben-jie-xi","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"05 字符串(String)"}]},{"id":"-M5hakbekK497bRNZUnk","title":"逐行读取文件","pathname":"/essential-go/05-strings/zhu-hang-du-qu-wen-jian","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"05 字符串(String)"}]},{"id":"-M5hb3_efxjYBvTIu8Pg","title":"规范化换行符","pathname":"/essential-go/05-strings/gui-fan-hua-huan-hang-fu","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"05 字符串(String)"}]},{"id":"-M5hbUUubVt9-_pjY8C3","title":"06 指针(Pointer)","pathname":"/essential-go/06-pointers","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5hbWxGqBhDUCBJkkge","title":"指针基础","pathname":"/essential-go/06-pointers/basics-of-pointers","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"06 指针(Pointer)"}]},{"id":"-M5hbl7dgu5BPcPFeEMx","title":"指针解引用(dereference)","pathname":"/essential-go/06-pointers/dereferencing-pointers","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"06 指针(Pointer)"}]},{"id":"-M5hc6h1G8ZYNkvNAEum","title":"指针方法vs值方法","pathname":"/essential-go/06-pointers/pointer-vs-value-methods","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"06 指针(Pointer)"}]},{"id":"-M5hcP7Dq8iLR0V_sMNx","title":"07 数组(Array)","pathname":"/essential-go/07-arrays","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5hcStIKV-Wr7IWytpb","title":"创建数组","pathname":"/essential-go/07-arrays/chuang-jian-shu-zu","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"07 数组(Array)"}]},{"id":"-M5hcZ16GxW7oDmaHQ91","title":"数组索引","pathname":"/essential-go/07-arrays/shu-zu-suo-yin","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"07 数组(Array)"}]},{"id":"-M5hcc-3yhsOYqrJ8hrb","title":"多维数组","pathname":"/essential-go/07-arrays/duo-wei-shu-zu","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"07 数组(Array)"}]},{"id":"-M5hci_zlT6HqJr_UfhK","title":"08 切片(Slice)","pathname":"/essential-go/08-slices","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5hcl15ttwISIsz5lf7","title":"创建切片","pathname":"/essential-go/08-slices/chuang-jian-qie-pian","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"08 切片(Slice)"}]},{"id":"-M5hcroSCgLl7I5_34br","title":"长度与容量","pathname":"/essential-go/08-slices/chang-du-yu-rong-liang","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"08 切片(Slice)"}]},{"id":"-M5hd3KDaeDorFOVV9vw","title":"追加元素","pathname":"/essential-go/08-slices/zhui-jia-yuan-su","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"08 切片(Slice)"}]},{"id":"-M5hd9SsAqexwMYHH32p","title":"切片过滤","pathname":"/essential-go/08-slices/qie-pian-guo-lv","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"08 切片(Slice)"}]},{"id":"-M5hdDlUyOWGQH4MHChY","title":"从切片删除元素","pathname":"/essential-go/08-slices/cong-qie-pian-shan-chu-yuan-su","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"08 切片(Slice)"}]},{"id":"-M5hdJm4dXZIhRLYD9ag","title":"复制切片","pathname":"/essential-go/08-slices/fu-zhi-qie-pian","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"08 切片(Slice)"}]},{"id":"-M5hdPBEveK5RBMK18MI","title":"零值切片","pathname":"/essential-go/08-slices/ling-zhi-qie-pian","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"08 切片(Slice)"}]},{"id":"-M5hdUUtaZEgjqWGOpA_","title":"切片的技巧","pathname":"/essential-go/08-slices/qie-pian-de-ji-qiao","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"08 切片(Slice)"}]},{"id":"-M5hdf0MH8yhZ__jO5Be","title":"通过预分配内存优化切片","pathname":"/essential-go/08-slices/tong-guo-yu-fen-pei-nei-cun-you-hua-qie-pian","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"08 切片(Slice)"}]},{"id":"-M5hck74k-Ak_IKY-RCE","title":"09 映射(Map)","pathname":"/essential-go/09-maps","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5hdslbgQLEu_ViWtWA","title":"声明和初始化映射","pathname":"/essential-go/09-maps/declare-and-initialize-a-map","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"09 映射(Map)"}]},{"id":"-M5hdzyjquH5QT3Bc113","title":"创建映射","pathname":"/essential-go/09-maps/create-a-map","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"09 映射(Map)"}]},{"id":"-M5he3ZlLetZDXeM1XP8","title":"通过键获取值","pathname":"/essential-go/09-maps/get-value-by-key","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"09 映射(Map)"}]},{"id":"-M5he7Rru9J0-cRORGi0","title":"获取映射大小(映射条目数)","pathname":"/essential-go/09-maps/get-map-size-number-of-map-entries","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"09 映射(Map)"}]},{"id":"-M5heNEy1IcjWBU33Tl2","title":"拷贝一个映射","pathname":"/essential-go/09-maps/copy-a-map","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"09 映射(Map)"}]},{"id":"-M5heUD_oV1GViZ4G5pP","title":"用range遍历映射","pathname":"/essential-go/09-maps/iterate-a-map-with-range","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"09 映射(Map)"}]},{"id":"-M5hebPo23jGcvvJiN39","title":"从映射中删除","pathname":"/essential-go/09-maps/delete-from-a-map","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"09 映射(Map)"}]},{"id":"-M5hegK_q9srKwJVWhQU","title":"将映射(Map)用作集合(Set)","pathname":"/essential-go/09-maps/use-map-as-a-set","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"09 映射(Map)"}]},{"id":"-M5jARtLSEwVSoeS1A53","title":"以切片为值的映射","pathname":"/essential-go/09-maps/maps-with-slices-as-values","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"09 映射(Map)"}]},{"id":"-M5jAgOn8w5Ko60hZJz3","title":"并发访问映射","pathname":"/essential-go/09-maps/concurrent-access-of-maps","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"09 映射(Map)"}]},{"id":"-M5jAsMgbRTPkuLrz7kg","title":"映射的零值","pathname":"/essential-go/09-maps/zero-value-of-a-map","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"09 映射(Map)"}]},{"id":"-M5jB6hEeMHGP2hWS4AJ","title":"10 结构体(Struct)","pathname":"/essential-go/10-structs","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jBGnHJyuW-2dyREWh","title":"基本声明","pathname":"/essential-go/10-structs/basic-declaration","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"10 结构体(Struct)"}]},{"id":"-M5jBSremUxe7KwUi4-s","title":"结构体字面量","pathname":"/essential-go/10-structs/struct-literals","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"10 结构体(Struct)"}]},{"id":"-M5jBarpeRpBpdB2y0DB","title":"匿名结构体","pathname":"/essential-go/10-structs/anonymous-structs","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"10 结构体(Struct)"}]},{"id":"-M5jBnO71ooIYKGWElXk","title":"组合和嵌入","pathname":"/essential-go/10-structs/composition-and-embedding","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"10 结构体(Struct)"}]},{"id":"-M5jBwyjBzDVa9y-caHr","title":"可导出vs不可导出字段(公有vs私有)","pathname":"/essential-go/10-structs/exported-vs-unexported-fields-private-vs-public","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"10 结构体(Struct)"}]},{"id":"-M5jCIlMxYLA6EA31VUH","title":"结构体标签","pathname":"/essential-go/10-structs/struct-tags","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"10 结构体(Struct)"}]},{"id":"-M5jCVGNOOHQ7el8dSep","title":"复制结构体(创建一份拷贝)","pathname":"/essential-go/10-structs/duplicate-a-struct-make-a-copy","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"10 结构体(Struct)"}]},{"id":"-M5jCeceVhUvHYmEHfp2","title":"空结构体","pathname":"/essential-go/10-structs/empty-struct","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"10 结构体(Struct)"}]},{"id":"-M5jCnB2AA0S-I-mi62H","title":"结构体方法","pathname":"/essential-go/10-structs/methods","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"10 结构体(Struct)"}]},{"id":"-M5jCy7t0VOYAn28tIy4","title":"11 接口(Interface)","pathname":"/essential-go/11-interfaces","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jIcVVEvKrzYo2wVoT","title":"简单接口","pathname":"/essential-go/11-interfaces/simple-interface","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"11 接口(Interface)"}]},{"id":"-M5jIxHOiHcPowwzGmfU","title":"从接口检测基础类型","pathname":"/essential-go/11-interfaces/determining-underlying-type-from-interface","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"11 接口(Interface)"}]},{"id":"-M5jJLRzz5wmpu7MI0tF","title":"确认某类型已实现某接口","pathname":"/essential-go/11-interfaces/ensure-that-type-implements-interface","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"11 接口(Interface)"}]},{"id":"-M5jJW1go5qWt__L7oli","title":"12 空接口(Empty Interface)","pathname":"/essential-go/12-empty-interface","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jJi42lDxGTvo8kv1t","title":"13 if, switch, goto","pathname":"/essential-go/13-if-switch-goto","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jK40rzvqKBh56Z5bG","title":"if语句","pathname":"/essential-go/13-if-switch-goto/if-statement","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"13 if, switch, goto"}]},{"id":"-M5jKCTg04LeFx3W-XD2","title":"switch语句","pathname":"/essential-go/13-if-switch-goto/switch-statement","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"13 if, switch, goto"}]},{"id":"-M5jKJBaE8B_8_tcEqTg","title":"goto语句","pathname":"/essential-go/13-if-switch-goto/goto-statements","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"13 if, switch, goto"}]},{"id":"-M5jKYKnGWN1ERIkL-HP","title":"14 for, while循环","pathname":"/essential-go/14-for-while-loops","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jKka4U22_Y7gGH0YV","title":"for循环的不同形式","pathname":"/essential-go/14-for-while-loops/different-forms-of-for-loop","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"14 for, while循环"}]},{"id":"-M5jKsXa88080TCgmVPM","title":"break和continue","pathname":"/essential-go/14-for-while-loops/break-and-continue","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"14 for, while循环"}]},{"id":"-M5jL0z_XqsgnfhSa3FT","title":"while循环","pathname":"/essential-go/14-for-while-loops/while-loop","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"14 for, while循环"}]},{"id":"-M5jMiAf0g2OWarTEdMy","title":"15 range语句","pathname":"/essential-go/15-range-statement","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jMybT7PaJXLPUUCcE","title":"遍历字符串、切片、映射","pathname":"/essential-go/15-range-statement/range-over-string-slice-map","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"15 range语句"}]},{"id":"-M5jNAevFfy7A5-nMYt7","title":"遍历字符串","pathname":"/essential-go/15-range-statement/range-over-a-string","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"15 range语句"}]},{"id":"-M5jO-DV-_oDG_5b_rvv","title":"遍历切片","pathname":"/essential-go/15-range-statement/range-over-a-slice","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"15 range语句"}]},{"id":"-M5jOEhOn6abnYiKpMa8","title":"遍历映射","pathname":"/essential-go/15-range-statement/range-over-a-map","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"15 range语句"}]},{"id":"-M5jOPwhu7bzrzjl_Qq3","title":"遍历数据通道","pathname":"/essential-go/15-range-statement/range-over-a-channel","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"15 range语句"}]},{"id":"-M5jOaflocKlU5w2Gtjl","title":"16 函数","pathname":"/essential-go/16-functions","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jOh9iMwR4zh30OX_D","title":"参数","pathname":"/essential-go/16-functions/parameters","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"16 函数"}]},{"id":"-M5jOmMk05PD9XGBSSUK","title":"返回值","pathname":"/essential-go/16-functions/return-values","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"16 函数"}]},{"id":"-M5jOxUwj7HYk5BaJjKE","title":"命名返回值","pathname":"/essential-go/16-functions/named-return-values","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"16 函数"}]},{"id":"-M5jPP65MBvQRhi6DjIR","title":"可变参数函数","pathname":"/essential-go/16-functions/variadic-functions","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"16 函数"}]},{"id":"-M5jPXtF0Sbtfot8rEFz","title":"函数字面量","pathname":"/essential-go/16-functions/function-literals","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"16 函数"}]},{"id":"-M5jPlDJn9a0gSyxZl5f","title":"函数类型的变量","pathname":"/essential-go/16-functions/variables-of-function-type","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"16 函数"}]},{"id":"-M5jPqsa1jOAK_szBCOx","title":"闭包","pathname":"/essential-go/16-functions/closures","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"16 函数"}]},{"id":"-M5jQaU4lcL-R0f9ftjZ","title":"17 方法","pathname":"/essential-go/17-methods","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jQm4vtpQFuHoM6p2Z","title":"18 错误处理","pathname":"/essential-go/18-error-handling","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jRbYsjA4XddO2RRuu","title":"返回错误","pathname":"/essential-go/18-error-handling/returning-an-error","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"18 错误处理"}]},{"id":"-M5jRmQG74kFlkSrzuJX","title":"创建标准错误值","pathname":"/essential-go/18-error-handling/creating-standard-error-values","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"18 错误处理"}]},{"id":"-M5jRsZiwa2KgZmfhLv2","title":"自定义错误类型","pathname":"/essential-go/18-error-handling/custom-error-types","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"18 错误处理"}]},{"id":"-M5jS5T-cWBB2dcGj68B","title":"错误处理","pathname":"/essential-go/18-error-handling/handling-an-error","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"18 错误处理"}]},{"id":"-M5jSOGhKTqOfmmwkH1N","title":"短程序中的错误处理","pathname":"/essential-go/18-error-handling/handling-errors-in-short-programs","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"18 错误处理"}]},{"id":"-M5jShBWI5SjfHj8WsyO","title":"将调用堆栈添加到错误消息","pathname":"/essential-go/18-error-handling/add-callstack-to-error-messages","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"18 错误处理"}]},{"id":"-M5jT2A5YxSODC6FzDcB","title":"编写良好的错误消息","pathname":"/essential-go/18-error-handling/writing-good-error-messages","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"18 错误处理"}]},{"id":"-M5jT9xMR7AAnVDesU-a","title":"19 延迟调用(Defer)","pathname":"/essential-go/19-defer","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jUTI-_seY7X5xSIfQ","title":"深入defer","pathname":"/essential-go/19-defer/defer-in-depth","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"19 延迟调用(Defer)"}]},{"id":"-M5jUfK9ktvj86k_2HBI","title":"defer的陷阱","pathname":"/essential-go/19-defer/defer-pitfalls","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"19 延迟调用(Defer)"}]},{"id":"-M5jUtc0xmG906I_jwM-","title":"20 恐慌(panic)和恢复(recover)","pathname":"/essential-go/20-panic-and-recover","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jV7UxUnmZlGRwLYdo","title":"恐慌(panic)","pathname":"/essential-go/20-panic-and-recover/panic","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"20 恐慌(panic)和恢复(recover)"}]},{"id":"-M5jVDevQRVWAfH3l-O7","title":"恢复(recover)","pathname":"/essential-go/20-panic-and-recover/recover","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"20 恐慌(panic)和恢复(recover)"}]},{"id":"-M5jVUVWQHu8eHjd0OER","title":"从恐慌中恢复","pathname":"/essential-go/20-panic-and-recover/recovering-from-panic","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"20 恐慌(panic)和恢复(recover)"}]},{"id":"-M5jVlVa3BtiwlmJ1qzT","title":"恐慌的使用场景","pathname":"/essential-go/20-panic-and-recover/use-cases-for-panic","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"20 恐慌(panic)和恢复(recover)"}]},{"id":"-M5jVuTCW_fbihBB_Sbi","title":"21 并发","pathname":"/essential-go/21-concurrency","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jW47oD0PXh-ZqC6k1","title":"你好，Go程","pathname":"/essential-go/21-concurrency/hello-world-goroutine","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"21 并发"}]},{"id":"-M5jWVYGnPL3pI6Ct_SS","title":"创建协程","pathname":"/essential-go/21-concurrency/create-goroutines","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"21 并发"}]},{"id":"-M5jWdKGBTXfzdysIDVV","title":"等待协程结束","pathname":"/essential-go/21-concurrency/wait-for-goroutines-to-finish","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"21 并发"}]},{"id":"-M5jWlmxya3zyq_0IIW_","title":"用信号量限制并发","pathname":"/essential-go/21-concurrency/limiting-concurrency-with-a-semaphore","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"21 并发"}]},{"id":"-M5jX1rtMWZiIKfVpHCl","title":"22 数据通道(channel)和多路选择(select)","pathname":"/essential-go/22-channels-and-select","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5jXJMYwduSuTBFuRFk","title":"使用range从channel读数据","pathname":"/essential-go/22-channels-and-select/using-range-to-read-from-a-channel","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"22 数据通道(channel)和多路选择(select)"}]},{"id":"-M5jXSjafOJ4xJ3vkO3o","title":"利用select为读channel设置超时","pathname":"/essential-go/22-channels-and-select/timeout-reading-from-a-channel-with-select","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"22 数据通道(channel)和多路选择(select)"}]},{"id":"-M5jXgqVscXC9VNP8C6K","title":"关闭channel","pathname":"/essential-go/22-channels-and-select/closing-channels","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"22 数据通道(channel)和多路选择(select)"}]},{"id":"-M5jXpoYviehVBSx9H_N","title":"有缓冲vs无缓冲channel","pathname":"/essential-go/22-channels-and-select/buffered-vs-unbuffered-channels","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"22 数据通道(channel)和多路选择(select)"}]},{"id":"-M5jY6Rhk-osFphTF48B","title":"利用select非阻塞接收数据","pathname":"/essential-go/22-channels-and-select/non-blocking-receive-with-select","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"22 数据通道(channel)和多路选择(select)"}]},{"id":"-M5jYYNzSoAeBi3d7zaP","title":"利用chan struct{}实现信号通道","pathname":"/essential-go/22-channels-and-select/signaling-channel-with-chan-struct","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"22 数据通道(channel)和多路选择(select)"}]},{"id":"-M5jZEVg7clo8GPsM0bf","title":"检查通道中是否有可用数据","pathname":"/essential-go/22-channels-and-select/checking-if-channel-has-data-available","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"22 数据通道(channel)和多路选择(select)"}]},{"id":"-M5jZaBeMsxJMmDksLTY","title":"channel使用惯例","pathname":"/essential-go/22-channels-and-select/channel-idioms","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"22 数据通道(channel)和多路选择(select)"}]},{"id":"-M5jZvFz8mw7h-1rRVGS","title":"23 互斥锁(Mutex)","pathname":"/essential-go/23-mutex","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5j_3CwNuU-yNvRE8Gb","title":"读写互斥(RWMutex)","pathname":"/essential-go/23-mutex/read-write-mutes-rwmutex","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"23 互斥锁(Mutex)"}]},{"id":"-M5j_KI7QNcTnKev_3iV","title":"互斥锁的陷阱","pathname":"/essential-go/23-mutex/mutex-gotchas","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"23 互斥锁(Mutex)"}]},{"id":"-M5j_VDdl8OVq-AbxvTd","title":"检测竞争","pathname":"/essential-go/23-mutex/detecting-races","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"23 互斥锁(Mutex)"}]},{"id":"-M5j_cPcp4eWQkW-gZav","title":"24 包","pathname":"/essential-go/24-packages","siteSpaceId":"sitesp_USRzD","description":""},{"id":"-M5j_nVD9I4shUKS7Jto","title":"使用go get将包安装到本地","pathname":"/essential-go/24-packages/installing-packages-locally-with-go-get","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"24 包"}]},{"id":"-M5j_ycGAOF0PiGt67f8","title":"导入包","pathname":"/essential-go/24-packages/importing-packages","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"24 包"}]},{"id":"-M5ja49Id43vvWHApmyc","title":"创建包","pathname":"/essential-go/24-packages/creating-a-package","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"24 包"}]},{"id":"-M5ja9ylCMW9wVHDq5o7","title":"包初始化","pathname":"/essential-go/24-packages/package-initialization","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"24 包"}]},{"id":"-M5jaGDlIJ3pnXb0dBbm","title":"包命名最佳实践","pathname":"/essential-go/24-packages/package-naming-best-practices","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"24 包"}]},{"id":"-M5javPS6JbjYLmg9O0o","title":"25 文件和I/O","pathname":"/essential-go/common-standard-libraries/25-files-and-io","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jbU5bmLxSPqnMGFQy","title":"读文件","pathname":"/essential-go/common-standard-libraries/25-files-and-io/reading-files","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"25 文件和I/O"}]},{"id":"-M5jbZUpgSjKgXPHRjoA","title":"写文件","pathname":"/essential-go/common-standard-libraries/25-files-and-io/writing-files","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"25 文件和I/O"}]},{"id":"-M5jbdv2AehIVXMU99z2","title":"文件操作","pathname":"/essential-go/common-standard-libraries/25-files-and-io/file-operations","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"25 文件和I/O"}]},{"id":"-M5jbkWmPhT2_GC9a3XS","title":"目录操作","pathname":"/essential-go/common-standard-libraries/25-files-and-io/directory-operations","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"25 文件和I/O"}]},{"id":"-M5jcX20BPX9cwhiBj0l","title":"文件路径操作","pathname":"/essential-go/common-standard-libraries/25-files-and-io/file-path-operations","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"25 文件和I/O"}]},{"id":"-M5jcfUpD_ObFvL7pnSI","title":"I/O相关的接口","pathname":"/essential-go/common-standard-libraries/25-files-and-io/io-related-interfaces","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"25 文件和I/O"}]},{"id":"-M5jcoOsPfTHrt_smQOL","title":"26 时间和日期","pathname":"/essential-go/common-standard-libraries/26-time-and-date","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jcvRwqZWeMpN3-lzS","title":"时间日期基本操作","pathname":"/essential-go/common-standard-libraries/26-time-and-date/time-and-date-basic-operations","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"26 时间和日期"}]},{"id":"-M5jezdhckxwu2TP5Sq2","title":"时间格式化","pathname":"/essential-go/common-standard-libraries/26-time-and-date/format-time","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"26 时间和日期"}]},{"id":"-M5jf4XQ3g01qXIoT8jo","title":"时间字符串解析","pathname":"/essential-go/common-standard-libraries/26-time-and-date/parse-time","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"26 时间和日期"}]},{"id":"-M5jfJP5j97QQ5pBp-J5","title":"像strftime那样格式化时间","pathname":"/essential-go/common-standard-libraries/26-time-and-date/format-time-like-strftime","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"26 时间和日期"}]},{"id":"-M5jfVPtSKi5n4M8cFZb","title":"时间和日期比较","pathname":"/essential-go/common-standard-libraries/26-time-and-date/compare-time-and-date","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"26 时间和日期"}]},{"id":"-M5jfq8l219QnqkYOHE9","title":"27 命令行传参","pathname":"/essential-go/common-standard-libraries/27-command-line-arguments","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jgGMqFiA2AiZLgX44","title":"28 记日志","pathname":"/essential-go/common-standard-libraries/28-logging","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jg_ALvIapFzwyUI9_","title":"29 执行命令","pathname":"/essential-go/common-standard-libraries/29-executing-commands","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jgrLrKsyCh-VZalxX","title":"30 十六进制和base64编码","pathname":"/essential-go/common-standard-libraries/30-hex-base64-encoding","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jhFc1UCRDPNxuOVFs","title":"31 JSON","pathname":"/essential-go/common-standard-libraries/31-json","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jhxbK3qiUyqxMFx64","title":"32 XML","pathname":"/essential-go/common-standard-libraries/32-xml","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5ji3G7SZV49pAag3G-","title":"33 CSV","pathname":"/essential-go/common-standard-libraries/33-csv","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5ji93US3kyKhbuO8x4","title":"34 YAML","pathname":"/essential-go/common-standard-libraries/34-yaml","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jiEBNo9CC3yuRrLqt","title":"35 SQL","pathname":"/essential-go/common-standard-libraries/35-sql","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jiLhIR4DRxaBlscLf","title":"36 HTTP客户端","pathname":"/essential-go/common-standard-libraries/36-http-client","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M7QQGCZubWd1LF_0YVh","title":"HTTP POST","pathname":"/essential-go/common-standard-libraries/36-http-client/http-post","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"36 HTTP客户端"}]},{"id":"-M7QTVbrQYZRv1Mps91o","title":"PUT请求发送JSON对象","pathname":"/essential-go/common-standard-libraries/36-http-client/put-request-of-json-object","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"36 HTTP客户端"}]},{"id":"-M5jiWyQiXkVlXVhwO-8","title":"37 HTTP服务端","pathname":"/essential-go/common-standard-libraries/37-http-server","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jiiROBAzXv42ue-oF","title":"38 文本和HTML模板","pathname":"/essential-go/common-standard-libraries/38-text-and-html-templates","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jiuBr5W6uiVgYI-kf","title":"39 反射(Reflection)","pathname":"/essential-go/common-standard-libraries/39-reflection","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jjMRMgVa4ZfDmBS4Z","title":"原始类型","pathname":"/essential-go/common-standard-libraries/39-reflection/primitive-types","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"39 反射(Reflection)"}]},{"id":"-M5jjVJ1rf_zgpulo1c1","title":"指针","pathname":"/essential-go/common-standard-libraries/39-reflection/pointers","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"39 反射(Reflection)"}]},{"id":"-M5jjb4RMGA4nsf1voR5","title":"结构体","pathname":"/essential-go/common-standard-libraries/39-reflection/structs","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"39 反射(Reflection)"}]},{"id":"-M5jjg0iNrwFC--Ceuua","title":"切片","pathname":"/essential-go/common-standard-libraries/39-reflection/slice","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"39 反射(Reflection)"}]},{"id":"-M5jjm6eB5f4K3HLkQqA","title":"reflect.Kind","pathname":"/essential-go/common-standard-libraries/39-reflection/reflect-kind","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"39 反射(Reflection)"}]},{"id":"-M5jkFiccPRSoKHXQdlL","title":"反射的用处","pathname":"/essential-go/common-standard-libraries/39-reflection/uses-for-reflection","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"39 反射(Reflection)"}]},{"id":"-M5jkNk5jSi5SZIfTt0J","title":"40 上下文(Context)","pathname":"/essential-go/common-standard-libraries/40-context","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jkgb68S3EfOyzvTBB","title":"创建上下文","pathname":"/essential-go/common-standard-libraries/40-context/creating-a-context","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"40 上下文(Context)"}]},{"id":"-M5jkq6_8vBxsdJpagO7","title":"用上下文为HTTP请求设置超时","pathname":"/essential-go/common-standard-libraries/40-context/set-timeout-for-http-requests","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"40 上下文(Context)"}]},{"id":"-M5jl0TPUqE6giq5v6xx","title":"用上下文携带值","pathname":"/essential-go/common-standard-libraries/40-context/context-with-value","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"40 上下文(Context)"}]},{"id":"-M5jlAfkpmIzj7nMrKfc","title":"编写可取消的函数","pathname":"/essential-go/common-standard-libraries/40-context/writing-cancellable-functions","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"40 上下文(Context)"}]},{"id":"-M5jlQFjhgLj86ZjMZus","title":"上下文就是带值的树","pathname":"/essential-go/common-standard-libraries/40-context/context-is-a-tree-of-values","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"40 上下文(Context)"}]},{"id":"-M5jlYqNa5ts-xZZhvGn","title":"context.TODO() vs. context.Background()","pathname":"/essential-go/common-standard-libraries/40-context/context-todo-vs-context-background","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"40 上下文(Context)"}]},{"id":"-M5jliRfd34-8uh3cRsM","title":"41 fmt包","pathname":"/essential-go/common-standard-libraries/41-package-fmt","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jm1GCFCmfRl7AO_L8","title":"fmt基本用法","pathname":"/essential-go/common-standard-libraries/41-package-fmt/basic-fmt","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"41 fmt包"}]},{"id":"-M5jm8HINXWeBSRDOASM","title":"Stringer接口","pathname":"/essential-go/common-standard-libraries/41-package-fmt/stringer-interface","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"41 fmt包"}]},{"id":"-M5jmFpW0ntS73vTxM2D","title":"42 测试","pathname":"/essential-go/common-standard-libraries/42-testing","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jmUhzV9SDQI7T87nJ","title":"基本测试","pathname":"/essential-go/common-standard-libraries/42-testing/basic-test","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"42 测试"}]},{"id":"-M5jmYjfybkp5nc0basL","title":"表格驱动的单元测试","pathname":"/essential-go/common-standard-libraries/42-testing/table-driven-unit-tests","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"42 测试"}]},{"id":"-M5jmowfSbKm-l5PI9sB","title":"使用setUp和tearDown函数","pathname":"/essential-go/common-standard-libraries/42-testing/testing-using-setup-and-teardown-function","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"42 测试"}]},{"id":"-M5jn5skuMZap3T9-qQ5","title":"性能测试","pathname":"/essential-go/common-standard-libraries/42-testing/benchmarks","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"42 测试"}]},{"id":"-M5joQhtRmzO7oFBBHla","title":"样例测试(自注释测试)","pathname":"/essential-go/common-standard-libraries/42-testing/example-tests-self-documenting-tests","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"42 测试"}]},{"id":"-M5joZKSly2e_qW_lOkz","title":"测试HTTP请求","pathname":"/essential-go/common-standard-libraries/42-testing/testing-http-requests","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"42 测试"}]},{"id":"-M5joh0cylEkhWJl9gpv","title":"在测试中设置/重置模拟(mock)函数","pathname":"/essential-go/common-standard-libraries/42-testing/set-reset-mock-function-in-tests","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"42 测试"}]},{"id":"-M5joxibmaeagE8BRmsD","title":"以HTML格式查看代码覆盖率","pathname":"/essential-go/common-standard-libraries/42-testing/view-code-coverage-in-html-format","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"42 测试"}]},{"id":"-M5jp9W9NUei9e6wBsRa","title":"43 利用cgo在Go中调用C","pathname":"/essential-go/common-standard-libraries/43-calling-c-from-go-with-cgo","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jpQbNyNEF12HBL1BG","title":"cgo上手教程","pathname":"/essential-go/common-standard-libraries/43-calling-c-from-go-with-cgo/cgo-first-steps-tutorial","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"43 利用cgo在Go中调用C"}]},{"id":"-M5jpbu6bSNuQ1NTaUaC","title":"从Go调用C函数","pathname":"/essential-go/common-standard-libraries/43-calling-c-from-go-with-cgo/calling-c-function-from-go","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"43 利用cgo在Go中调用C"}]},{"id":"-M5jpvMgM3fVLjVxAkuT","title":"全方位连接C和Go代码","pathname":"/essential-go/common-standard-libraries/43-calling-c-from-go-with-cgo/wire-c-and-go-code-in-all-directions","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"43 利用cgo在Go中调用C"}]},{"id":"-M5jqQ6Hnq-C-cCYJmSB","title":"44 使用pprof分析Go程序","pathname":"/essential-go/common-standard-libraries/44-profiling-using-go-tool-pprof","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jqk8uDdvidqvM55VP","title":"CPU和内存基本分析","pathname":"/essential-go/common-standard-libraries/44-profiling-using-go-tool-pprof/basic-cpu-and-memory-profiling","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"44 使用pprof分析Go程序"}]},{"id":"-M5jqzc6OBwXKopPALdy","title":"使用benchmark生成分析文件","pathname":"/essential-go/common-standard-libraries/44-profiling-using-go-tool-pprof/using-benchmarks-to-create-profile","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"44 使用pprof分析Go程序"}]},{"id":"-M5jrAfk4cS6ak13jleJ","title":"内存基本分析","pathname":"/essential-go/common-standard-libraries/44-profiling-using-go-tool-pprof/basic-memory-profiling","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"44 使用pprof分析Go程序"}]},{"id":"-M5jrNP4H3Dlhy_aCfHE","title":"设置CPU/Block分析速率","pathname":"/essential-go/common-standard-libraries/44-profiling-using-go-tool-pprof/set-cpublock-profile-rate","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"44 使用pprof分析Go程序"}]},{"id":"-M5jrhuCyXx5x_Y1xBQi","title":"访问分析(profile)文件","pathname":"/essential-go/common-standard-libraries/44-profiling-using-go-tool-pprof/accessing-profile-file","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"44 使用pprof分析Go程序"}]},{"id":"-M5jrytYU3YmxRbw7uas","title":"45 交叉编译","pathname":"/essential-go/common-standard-libraries/45-cross-compilation","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jsHbkDb9aUtZTnkAj","title":"46 使用构建标签进行条件编译","pathname":"/essential-go/common-standard-libraries/46-conditional-compilation-with-build-tags","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5js_EoCSSjPvXkAn8A","title":"开发和生产环境编译","pathname":"/essential-go/common-standard-libraries/46-conditional-compilation-with-build-tags/dev-vs-production-builds","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"46 使用构建标签进行条件编译"}]},{"id":"-M5jsjouOVPQILACAANS","title":"47 内联函数","pathname":"/essential-go/common-standard-libraries/47-inlining-functions","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jt5WLReMKjLKG9BiR","title":"48 用sync.Pool以获得更好性能","pathname":"/essential-go/common-standard-libraries/48-sync-pool-for-better-performance","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jtKNtAaV6A7SoS0KO","title":"49 gob","pathname":"/essential-go/common-standard-libraries/49-gob","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jtV72BCZvIB3auxm-","title":"50 插件机制","pathname":"/essential-go/common-standard-libraries/50-plugin","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jtkWaFVCh7rU2hBhV","title":"51 HTTP服务中间件","pathname":"/essential-go/common-standard-libraries/51-http-server-middleware","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jttYbRlmG4P1hFLdF","title":"一般处理(handler)函数","pathname":"/essential-go/common-standard-libraries/51-http-server-middleware/normal-handler-function","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"51 HTTP服务中间件"}]},{"id":"-M5ju3_9m6UBjj2DRfX5","title":"中间件里计算handler函数的耗时","pathname":"/essential-go/common-standard-libraries/51-http-server-middleware/middleware-calculate-time-required-for-handlerfunc-to-execute","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"51 HTTP服务中间件"}]},{"id":"-M5juGnIRgjHv6HQCYZ0","title":"CORS中间件","pathname":"/essential-go/common-standard-libraries/51-http-server-middleware/cors-middleware","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"51 HTTP服务中间件"}]},{"id":"-M5juMiijfbyyHtco2pi","title":"Auth中间件","pathname":"/essential-go/common-standard-libraries/51-http-server-middleware/auth-middleware","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"51 HTTP服务中间件"}]},{"id":"-M5juf1SWA3zTXts0Dt9","title":"恢复handler以防止服务端崩溃","pathname":"/essential-go/common-standard-libraries/51-http-server-middleware/recovery-handler-to-prevent-server-from-crashing","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"51 HTTP服务中间件"}]},{"id":"-M5jv-ne85-H00WKdYYJ","title":"52 Go中的Protobuf","pathname":"/essential-go/common-standard-libraries/52-protobuf-in-go","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jvHvyJQX2sePJv7tM","title":"在Go中使用Protobuf","pathname":"/essential-go/common-standard-libraries/52-protobuf-in-go/using-protobuf-with-go","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"52 Go中的Protobuf"}]},{"id":"-M5jvWVVlzy8D7HdXRQJ","title":"53 控制台I/O","pathname":"/essential-go/common-standard-libraries/53-console-io","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jveVsTB-MDzrnucM3","title":"54 密码学","pathname":"/essential-go/common-standard-libraries/54-cryptography","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jvoLAQtYeu1SP-2Hp","title":"使用AES-GCM进行加密和解密","pathname":"/essential-go/common-standard-libraries/54-cryptography/encryption-and-decryption-with-aes-gcm","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"54 密码学"}]},{"id":"-M5jw4FwZBOv8rVXlcME","title":"55 图片处理(PNG, JPEG, BMP, TIFF, WEBP, VP8, GIF)","pathname":"/essential-go/common-standard-libraries/55-images-png-jpeg-bmp-tiff-webp-vp8-gif","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jwEv-SsKBjZlyp8MX","title":"基本概念","pathname":"/essential-go/common-standard-libraries/55-images-png-jpeg-bmp-tiff-webp-vp8-gif/basic-concepts","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"55 图片处理(PNG, JPEG, BMP, TIFF, WEBP, VP8, GIF)"}]},{"id":"-M5jwKfRQAMWa2UIXczE","title":"加载和保存图片","pathname":"/essential-go/common-standard-libraries/55-images-png-jpeg-bmp-tiff-webp-vp8-gif/loading-and-saving-image","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"55 图片处理(PNG, JPEG, BMP, TIFF, WEBP, VP8, GIF)"}]},{"id":"-M5jwPvseauSSM3Co24r","title":"裁剪图片","pathname":"/essential-go/common-standard-libraries/55-images-png-jpeg-bmp-tiff-webp-vp8-gif/cropping-image","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"55 图片处理(PNG, JPEG, BMP, TIFF, WEBP, VP8, GIF)"}]},{"id":"-M5jwdBOLsX6H7OM0z-Z","title":"将图片由彩色转为灰度","pathname":"/essential-go/common-standard-libraries/55-images-png-jpeg-bmp-tiff-webp-vp8-gif/convert-color-image-to-grayscale","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"55 图片处理(PNG, JPEG, BMP, TIFF, WEBP, VP8, GIF)"}]},{"id":"-M5jwqwI-CzVVGmpo6bl","title":"调整图片尺寸","pathname":"/essential-go/common-standard-libraries/55-images-png-jpeg-bmp-tiff-webp-vp8-gif/resizing-images","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"55 图片处理(PNG, JPEG, BMP, TIFF, WEBP, VP8, GIF)"}]},{"id":"-M5jx5DdIkXHZrXIYkvu","title":"56 Go语言命令行工具","pathname":"/essential-go/common-standard-libraries/56-the-go-command","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jxFDPvz19bqIc4FRd","title":"go fmt","pathname":"/essential-go/common-standard-libraries/56-the-go-command/go-fmt","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"56 Go语言命令行工具"}]},{"id":"-M5jxInnBCsmHSYFLpbn","title":"go run","pathname":"/essential-go/common-standard-libraries/56-the-go-command/go-run","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"56 Go语言命令行工具"}]},{"id":"-M5jxMM2mYPqf7_mx032","title":"go build","pathname":"/essential-go/common-standard-libraries/56-the-go-command/go-build","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"56 Go语言命令行工具"}]},{"id":"-M5jxPnudP_nTglZMPkz","title":"go clean","pathname":"/essential-go/common-standard-libraries/56-the-go-command/go-clean","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"56 Go语言命令行工具"}]},{"id":"-M5jxTPJOIXes_4yyZw6","title":"go get","pathname":"/essential-go/common-standard-libraries/56-the-go-command/go-get","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"56 Go语言命令行工具"}]},{"id":"-M5jxXI-Pvr0jksQ4wFO","title":"go env","pathname":"/essential-go/common-standard-libraries/56-the-go-command/go-env","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"56 Go语言命令行工具"}]},{"id":"-M5jx_gDoaGX1rgOwEO7","title":"go test","pathname":"/essential-go/common-standard-libraries/56-the-go-command/go-test","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"56 Go语言命令行工具"}]},{"id":"-M5jxjRObPLNwUqmT42D","title":"57 利用持续集成(CI)服务测试代码","pathname":"/essential-go/common-standard-libraries/57-testing-code-with-ci-services","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jy60P3hqOLPgz0s87","title":"利用Github Actions测试Go代码","pathname":"/essential-go/common-standard-libraries/57-testing-code-with-ci-services/test-go-code-with-github-actions","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"57 利用持续集成(CI)服务测试代码"}]},{"id":"-M5jyHPA6b8wpWuCeKEJ","title":"58 Windows图形界面(GUI)编程","pathname":"/essential-go/common-standard-libraries/58-windows-gui-programming","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"}]},{"id":"-M5jySPOsVa8iI7g8ovc","title":"第一个Windows应用","pathname":"/essential-go/common-standard-libraries/58-windows-gui-programming/a-first-window-app","siteSpaceId":"sitesp_USRzD","description":"","breadcrumbs":[{"label":"第二部分 常用标准库"},{"label":"58 Windows图形界面(GUI)编程"}]},{"id":"-M5jyeEKFxRagMC4sh1T","title":"59 贡献者","pathname":"/essential-go/59-contributors","siteSpaceId":"sitesp_USRzD","description":""}]}