{"id":19993501,"url":"https://github.com/KeKe-Li/For-learning-Go-Tutorial","last_synced_at":"2025-05-04T12:31:51.996Z","repository":{"id":27744911,"uuid":"115090543","full_name":"KeKe-Li/For-learning-Go-Tutorial","owner":"KeKe-Li","description":"Introduction to beginners learn to go","archived":false,"fork":false,"pushed_at":"2023-10-07T10:42:04.000Z","size":9397,"stargazers_count":664,"open_issues_count":1,"forks_count":132,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-04-13T07:46:33.487Z","etag":null,"topics":["go","tutorial"],"latest_commit_sha":null,"homepage":"https://github.com/KeKe-Li/For-learning-Go-Tutorial","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KeKe-Li.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-22T07:43:33.000Z","updated_at":"2025-04-08T10:49:23.000Z","dependencies_parsed_at":"2024-11-13T04:56:48.776Z","dependency_job_id":"660075ce-a189-4f77-a849-4eadb881ffcb","html_url":"https://github.com/KeKe-Li/For-learning-Go-Tutorial","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KeKe-Li%2FFor-learning-Go-Tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KeKe-Li%2FFor-learning-Go-Tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KeKe-Li%2FFor-learning-Go-Tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KeKe-Li%2FFor-learning-Go-Tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KeKe-Li","download_url":"https://codeload.github.com/KeKe-Li/For-learning-Go-Tutorial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252334696,"owners_count":21731442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","tutorial"],"created_at":"2024-11-13T04:52:45.408Z","updated_at":"2025-05-04T12:31:46.987Z","avatar_url":"https://github.com/KeKe-Li.png","language":null,"readme":"### For-learning-Go-Tutorial\n准备写一本Go的书针对初学者快速入门开发和使用go！\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"100%\" align=\"center\" src=\"src/images/1.jpg\" /\u003e\n\u003c/p\u003e\n\n\u003cp align='center'\u003e\n\u003cimg src=\"https://img.shields.io/badge/build-passing-brightgreen.svg\"\u003e\n\u003ca href=\"https://twitter.com/perfactsen\"\u003e\u003cimg src=\"https://img.shields.io/badge/twitter-keke-green.svg?style=flat\u0026colorA=009df2\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.zhihu.com/people/sencoed.com/activities\"\u003e\u003cimg src=\"https://img.shields.io/badge/%E7%9F%A5%E4%B9%8E-keke-green.svg?style=flat\u0026colorA=009df2\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n学习Go语言需要去了解Go的特性，然后在深入的去实践，如果你想使用Go语言写出Go味道的程序，那么你就需要付出努力去实践了！\n先来了解下Go语言为何创造出来的历史吧，Go 语言是由谷歌公司在 2007 年开始开发的一门语言，目的是能在多核心时代高效编写网络应用程序。Go 语言的创始人 Robert Griesemer、Rob Pike 和 Ken Thompson 都是在计算机发展过程中作出过重要贡献的人。\n自从 2009 年 11 月正式公开发布后，Go 语言迅速席卷了整个互联网后端开发领域，其社区里不断涌现出类似 vitess、Docker、etcd、Consul 等重量级的开源项目。\n\nGo是一种编译型语言，一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点：\n\n* 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。\n* Go为软件构造提供了一种模型，它使依赖分析更加容易，且避免了大部分C风格include文件与库的开头。\n* Go是静态类型的语言，它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间，这样感觉起来比典型的面向对象语言更轻量级。\n* Go完全是垃圾回收型的语言，并为并发执行与通信提供了基本的支持。\n\n为了获得最佳的运行性能,GO语言被设计成一门静态编译型的语言，而不是动态解释型语言，这里我对静态编译型的语言和动态解释型语言做个简单的介绍，方便初学Go语言的新人理解。\n\n1.静态编译型的语言\n\n静态类型语言是指在编译时变量的数据类型即可确定的语言，多数静态类型语言要求在使用变量之前必须声明数据类型，某些具有类型推导能力的现代语言可能能够部分减轻这个要求. 并且通过编译器（compiler）将源代码编译成机器码，之后才能执行的语言。一般需经过编译（compile）、链接（linker）这两个步骤。编译是把源代码编译成机器码，链接是把各个模块的机器码和依赖库串连起来生成可执行文件。\n\n代表语言：Java,Go,C\n\n2.动态解释型语言\n\n动态类型语言是在运行 时确定数据类型的语言。变量使用之前不需要类型声明，通常变量的类型是被赋值的那个值的类型。解释性语言的程序不需要编译，相比编译型语言省了道工序，解释性语言在运行程序的时候才逐行翻译。\n\n代表语言：JavaScript、Python\n\nGo语言的官方编译器被称为gc,包括编译工具5g,6g.8g，链接工具51,61和81以及文档查看工具godoc.\n\n学习一门语言最好的方式就是去实践，那么我们就从go的例子开始实践吧！\n\n* [例子入门](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/example/EX.0.1.md)\n* [基本结构](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter01/01.0.md)\n* [基本数据类型](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter02/01.0.md)  \n* [复合数据类型](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter03/01.0.md)\n* [函数](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter04/01.0.md)\n* [方法(method)](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter05/01.0.md)\n* [接口(Interfaces)](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter06/01.0.md)\n* [反射(reflection)](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter07/01.0.md)\n* [通信协议解析](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter08/01.0.md)\n* [Channel](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter09/01.0.md)\n* [Goroutine并发处理](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter10/01.0.md)\n* [Golang包详解](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter11/01.0.md)\n* [Grpc与Protobuf](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter12/01.0.md)\n* [Golang逃逸分析](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter13/01.0.md)\n* [Etcd的使用](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter14/01.0.md)\n* [TiDB的使用](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter15/01.0.md)\n* [Go排序算法及其性能比较](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter16/01.0.md)\n* [Go程序测试](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter17/01.0.md)\n* [Sync.Map解析](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter18/01.0.md)\n* [Sync.WaitGroup解析](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter19/01.0.md)\n* [Go异步抢占式调度](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/chapter20/01.0.md)\n* [Go编程标准和规范](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/spec/01.0.md)\n* [Golang垃圾回收](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/spec/02.0.md)\n* [Go练习案例](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/example/EX.0.2.md)\n* [Golang中处理slice的注意事项](https://github.com/KeKe-Li/For-learning-Go-Tutorial/blob/master/src/spec/03.0.md)\n\n\n### golang编程\n\n觉得此文章不错，支持我的话可以给我star ，:star:！如果有问题可以加我的微信,也可以加入我们的交流群一起交流golang技术！\n\n\n### License\nThis is free software distributed under the terms of the MIT license\n","funding_links":[],"categories":["miscellaneous","Others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKeKe-Li%2FFor-learning-Go-Tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKeKe-Li%2FFor-learning-Go-Tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKeKe-Li%2FFor-learning-Go-Tutorial/lists"}