Merge pull request #128 from wenchaoh997/zh_cn

translate zh
This commit is contained in:
Michael Cade 2022-06-06 10:28:15 +01:00 committed by GitHub
commit 7096e77129
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 164 additions and 166 deletions

View File

@ -1,7 +1,7 @@
--- ---
title: '#90DaysOfDevOps - Introduction - Day 1' title: '#90DaysOfDevOps - 简介 - 第一天'
published: false published: false
description: 90DaysOfDevOps - Introduction description: 90DaysOfDevOps - 简介
tags: "devops, 90daysofdevops, learning" tags: "devops, 90daysofdevops, learning"
cover_image: null cover_image: null
canonical_url: null canonical_url: null
@ -10,70 +10,53 @@ id: 1048731
## 简介 - Day 1 ## 简介 - Day 1
在90天中的第一天我们开始学习DevOps的基本理解和工具。这些可以有助于建立DevOps的思维方式。 在90天中的第一天我们开始学习DevOps的基本理解和工具。这些可以有助于建立DevOps的思维方式。
<!-- Day 1 of our 90 days and adventure to learn a good foundational understanding of DevOps and tools that help with a DevOps mindset. -->
几年前,我开始学习相关内容,但我的关注于虚拟化平台和基于云的技术,主要研究基础设施即代码 (Infrastructure as Code, [IaC](https://www.ibm.com/cloud/learn/infrastructure-as-code)) 和Terraform和Chef的应用程序配置管理。 几年前,我开始学习相关内容,但我的关注于虚拟化平台和基于云的技术,主要研究基础设施即代码 (Infrastructure as Code, [IaC](https://www.ibm.com/cloud/learn/infrastructure-as-code)) 和Terraform和Chef的应用程序配置管理。
<!-- This learning journey started for me a few years back but my focus then was around virtualisation platforms and cloud based technologies, I was looking mostly into Infrastructure as Code and Application configuration management with Terraform and Chef. -->
接着来到2021年3月我得到了一个可以将精力集中在Veeam的Kasten的云原生部署上的机会。这个项目专注于Kubernetes和DepOps以及相关的社区。在开始学习后我很快发现在除了Kubernetes和容器化的基础知识那里还有一个非常广阔的世界。我开始在社区中交流学习更多关于DevOps文化、工具和流程最终我想公开地分享这些想法。 接着来到2021年3月我得到了一个可以将精力集中在Veeam的Kasten的云原生部署上的机会。这个项目专注于Kubernetes和DepOps以及相关的社区。在开始学习后我很快发现在除了Kubernetes和容器化的基础知识那里还有一个非常广阔的世界。我开始在社区中交流学习更多关于DevOps文化、工具和流程最终我想公开地分享这些想法。
<!-- Fast forward to March 2021, I was given an amazing opportunity to concentrate my efforts around the Cloud Native strategy at Kasten by Veeam. Which was going to be a massive focus on Kubernetes and DevOps and the community surrounding these technologies. I started my learning journey and quickly realised there was a very wide world aside from just learning the fundamentals of Kubernetes and Containerisation and it was then when I started speaking to the community and learning more and more about the DevOps culture, tooling and processes so I started documenting some of the areas I wanted to learn in public. -->
[So you want to learn DevOps?](https://blog.kasten.io/devops-learning-curve) [So you want to learn DevOps?](https://blog.kasten.io/devops-learning-curve)
## 开始我们的旅程吧 ## 开始我们的旅程吧
如果你阅读了以上的博客,你会发现这是我学习过程中的进阶内容。我认为我并不是以上以上任一领域的专家,但我希望分享一些免费和需付费的资源,我们可以按需选择。 如果你阅读了以上的博客,你会发现这是我学习过程中的进阶内容。我认为我并不是以上以上任一领域的专家,但我希望分享一些免费和需付费的资源,我们可以按需选择。
<!-- If you read the above blog you will see this is a high level contents for my learning journey and I will say at this point I am no where near an expert in any of these sections but what I wanted to do was share some resources both FREE and some paid for but an option for both as we all have different circumstances. -->
在接下来的90天里我想记录这些资料并涵盖那些基础领域。我希望社区参与进来分享你的相关经历和资源以便我们一起学习共同进步。 在接下来的90天里我想记录这些资料并涵盖那些基础领域。我希望社区参与进来分享你的相关经历和资源以便我们一起学习共同进步。
<!-- Over the next 90 days I want to document these resources and cover those foundational areas, I would love for the community to also get involved share your journey and resources so we can learn in public and help each other. -->
在该项目开头的README中你会了解到我已经将内容拆分成多个小节基本上是由12周加6天组成。前6天我们会大致探讨DevOps的基础后续再深入到一些特定领域。这份清单不是完美的再次希望社区参与进来并一起帮助它成为有用的资源。 在该项目开头的README中你会了解到我已经将内容拆分成多个小节基本上是由12周加6天组成。前6天我们会大致探讨DevOps的基础后续再深入到一些特定领域。这份清单不是完美的再次希望社区参与进来并一起帮助它成为有用的资源。
<!-- You will see from the opening readme in the project repository that I have split things into sections and it is basically 12 weeks plus 6 days. The first 6 days we will explore the fundamentals of DevOps in general before diving into some of the specific areas, by no way is this list exhaustive and again would love for the community to assist in making this a useful resource. -->
在这里我会分享另一个资源,我认为每个人都应认真了解,或是根据自身需求制作自己的思维导图,它的地址如下: 在这里我会分享另一个资源,我认为每个人都应认真了解,或是根据自身需求制作自己的思维导图,它的地址如下:
<!-- Another resource I will share at this point that I think everyone should have a good look at and maybe create your own mind map for yourself and your interest and position is the following: -->
[DevOps Roadmap](https://roadmap.sh/devops) [DevOps Roadmap](https://roadmap.sh/devops)
当我在创建这个初始清单和博客的时候我发现这是个很好的资源。你也可以看到除了在我列出的12个专题以外的其他领域更详细的信息。 当我在创建这个初始清单和博客的时候我发现这是个很好的资源。你也可以看到除了在我列出的12个专题以外的其他领域更详细的信息。
<!-- I found this a great resource when I was creating my initial list and blog post on this topic. You can also see there are other areas that go into a lot more detail outside of the 12 topics I have listed here in this repository. -->
## 第一步 - 什么是 DevOps? ## 第一步 - 什么是 DevOps?
这里可以列出很多的博客和YouTube视频但作为90天挑战的开始以及我们每天花费约一小时来学习一些新的或关于DevOps的东西。我觉得从宏观的“什么是DevOps”开始是个不错的选择。 这里可以列出很多的博客和YouTube视频但作为90天挑战的开始以及我们每天花费约一小时来学习一些新的或关于DevOps的东西。我觉得从宏观的“什么是DevOps”开始是个不错的选择。
<!-- There are so many blog articles and YouTube videos to list here, but as we start the 90 day challenge and we focus on spending around an hour a day learning something new or about DevOps I thought it was good to get some of the high level of "what DevOps is" down to begin. -->
首先DevOps不是工具。你不能购买它它不是可下载的软件sku或开源GitHub仓库。DevOps也不是编程语言或什么黑魔法。 首先DevOps不是工具。你不能购买它它不是可下载的软件sku或开源GitHub仓库。DevOps也不是编程语言或什么黑魔法。
<!-- Firstly, DevOps is not a tool. You cannot buy it, it is not a software sku or an open source GitHub repository you can download. It is also not a programming language, it is also not some dark art magic either. -->
DevOps是一种在软件开发中更明智的做事方式。- 等一下... 但如果你不是一个软件开发人员,你现在应该关闭这个页面并离开吗??不,继续读下去... 因为DevOps将软件开发和运维运营结合在了一起。我先前提及到我更多关注的是虚拟机方面的工作而这些通常属于运营。但在社区中不同背景的人们都可以通过更好地了解DevOps来学习那些实践案例。DevOps将100%造福于个人、开发者、运维运营和QA工程师。 DevOps是一种在软件开发中更明智的做事方式。- 等一下... 但如果你不是一个软件开发人员,你现在应该关闭这个页面并离开吗??不,继续读下去... 因为DevOps将软件开发和运维运营结合在了一起。我先前提及到我更多关注的是虚拟机方面的工作而这些通常属于运营。但在社区中不同背景的人们都可以通过更好地了解DevOps来学习那些实践案例。DevOps将100%造福于个人、开发者、运维运营和QA工程师。
<!-- DevOps is a way to do smarter things in Software Development. - Hold up... But if you are not a software developer should you turn away right now and not dive into this project??? No Not at all, Stay... Because DevOps brings together a combination of software development and operations. I mentioned earlier that I was more on the VM side and that would generally fall under the Operations side of the house, but within the community there are people with all different backgrounds where DevOps is 100% going to benefit the individual, Developers, Operations and QA Engineers all can equally learn these best practices by having a better understanding of DevOps. -->
DevOps是一系列有助于达成这一目标的实践减少产品从构思到发布阶段到最终用户或内部团队或客户的任何人所需要的时间。 DevOps是一系列有助于达成这一目标的实践减少产品从构思到发布阶段到最终用户或内部团队或客户的任何人所需要的时间。
<!-- DevOps is a set of practices that help to reach the goal of this movement: reducing the time between the ideation phase of a product and its release in production to the end-user or whomever it could be an internal team or customer. -->
在这第一个星期,我们将展开讨论**敏捷方法论**(The Agile Methodology)。DevOps和Agile是被广泛使用的方法为的是实现**应用程序app**的持续迭代更新。 在这第一个星期,我们将展开讨论**敏捷方法论**(The Agile Methodology)。DevOps和Agile是被广泛使用的方法为的是实现**应用程序app**的持续迭代更新。
<!-- Another area we will dive into in this first week is around **The Agile Methodology** DevOps and Agile are widely adopted together to achieve continuous delivery of your **Application** -->
宏观层次的收获是DevOps的思维方式是将漫长的软件发布过程从可能几年的时间拆分成更频繁的、较小的多次发布。另一个关键点是DevOps打破了团队间的隔阂开发人员、运维运营人员和QA工程师。 宏观层次的收获是DevOps的思维方式是将漫长的软件发布过程从可能几年的时间拆分成更频繁的、较小的多次发布。另一个关键点是DevOps打破了团队间的隔阂开发人员、运维运营人员和QA工程师。
<!-- The high level take away is with a DevOps mindset or culture its about taking a way the long drawn out software release process from potentially years to being able to drop smaller releases more frequently. The other key fundamental to take away here is it's about breaking down silos between the teams I previously mentioned, Developers, Operations and QA. -->
从DevOps的角度**开发、测试、部署**都属于DevOps团队。 从DevOps的角度**开发、测试、部署**都属于DevOps团队。
<!-- From a DevOps perspective, **Development, Testing and Deployment** all land with the DevOps team. -->
最后一点,我们必须通过**自动化**使得整个过程尽可能有效和高效。 最后一点,我们必须通过**自动化**使得整个过程尽可能有效和高效。
<!-- The final point I will make is to make this as effective and efficient as possible we must leverage **Automation** -->
<!-- ## 信息来源 --> ## 相关资料
## Resources
I am always open to adding additional resources to these readme files as it is here as a learning tool. 我始终欢迎大家在readme文件中添加资料将它作为一个学习工具。
My advice is to watch all of the below and hopefully you also picked something up from the text and explanations above. 我的建议是浏览下面的内容,希望你也能从文字解释中有所收获。
- [DevOps in 5 Minutes](https://www.youtube.com/watch?v=Xrgk023l4lI) - [DevOps in 5 Minutes](https://www.youtube.com/watch?v=Xrgk023l4lI)
- [What is DevOps? Easy Way](https://www.youtube.com/watch?v=_Gpe1Zn-1fE&t=43s) - [What is DevOps? Easy Way](https://www.youtube.com/watch?v=_Gpe1Zn-1fE&t=43s)
- [DevOps roadmap 2022 | Success Roadmap 2022](https://www.youtube.com/watch?v=7l_n97Mt0ko) - [DevOps roadmap 2022 | Success Roadmap 2022](https://www.youtube.com/watch?v=7l_n97Mt0ko)
If you made it this far then you will know if this is where you want to be or not. See you on [Day 2](day02.md). 如果你已看到这里那么你已知道是否要继续学习DevOps了。[第二天](day02.md)见。

View File

@ -1,60 +1,61 @@
--- ---
title: '#90DaysOfDevOps - The Big Picture: Learning a Programming Language - Day 7' title: '#90DaysOfDevOps - 概述DevOps 与学习一门编程语言 - 第七天'
published: false published: false
description: 90DaysOfDevOps - The Big Picture DevOps & Learning a Programming Language description: 90DaysOfDevOps - 概述DevOps 与学习一门编程语言
tags: 'devops, 90daysofdevops, learning' tags: 'devops, 90daysofdevops, learning'
cover_image: null cover_image: null
canonical_url: null canonical_url: null
id: 1048856 id: 1048856
--- ---
## The Big Picture: DevOps & Learning a Programming Language ## 概述DevOps与学习一门编程语言
I think it is fair to say to be successful in the long term as a DevOps engineer you've got to know at least one programming language at a foundational level. I want to take this first session of this section to explore why this is such a critical skill to have, and hopefully, by the end of this week or section, you are going to have a better understanding of the why, how and what to do to progress with your learning journey. 我认为要想在长期成为一名成功的DevOps工程师你需要了解至少一种编程语言的基本用法。我想通过本节的第一部分来探究为什么这是一项重要的技能。同时也希望在本周或本节结束时你会更好地理解在这个学习过程中为什么、如何做和做什么。
I think if I was to ask out on social do you need to have programming skills for DevOps related roles, the answer will be most likely a hard yes? Let me know if you think otherwise? Ok but then a bigger question and this is where you won't get such a clear answer is which programming language? The most common answer I have seen here has been Python or increasingly more often, we're seeing Golang or Go should be the language that you learn. 我想如果我在社交平台上提问从事与DevOps的相关工作是否需要具备编程能力得到的答案很可能是肯定的如果你不这么认为欢迎告诉我。但一个更大的问题是你无法明确知道所需的是哪种编程语言一个最常见的回答是我看到Python正变得越来越热门而我们应该选择学习Golang或Go语言。
To be successful in DevOps you have to have a good knowledge of programming skills is my takeaway from that at least. But we have to understand why we need it to choose the right path. 为了在DevOps中获得成功至少在我看来你应该具备良好的编程知识。但我们也该知道为什么我们需要它来选择正确的方向。
## Understand why you need to learn a programming language. ## 了解为什么需要学习编程语言
The reason that Python and Go are recommended so often for DevOps engineers is that a lot of the DevOps tooling is written in either Python or Go, which makes sense if you are going be build DevOps tools. Now this is important as this will determine really what you should learn and that would likely be the most beneficial. If you are going to be building DevOps tools or you are joining a team that does then it would make sense to learn that same language, if you are going to be heavily involved in Kubernetes or Containers then it's more than likely that you would want to choose Go as your programming language. For me, the company I work for (Kasten by Veeam) is in the Cloud-Native ecosystem focused on data management for Kubernetes and everything is written in Go. 许多DevOps的工具是用Python或Go编写的如果你要构建DevOps工具这将为你提供便利。这也成为了DevOps推荐Python和Go的原因。如今这会影响你决定学习哪一种编程语言并可能是对你最有益的。如果你想构建DevOps工具或是加入一个从事相关工作的团队选择学习与之相同的语言将是有意义的。如果你需要大量使用Kubernetes或Containers那么你很可能会将Go作为你的编程语言。对我来说我工作的公司(Kasten by Veeam) 位于云原生态系统领域(Cloud-Native ecosystem)专注于Kubernetes的数据管理并且所有工作都用Go来编写。
But then you might not have clear cut reasoning like that to choose you might be a student or transitioning careers with no real decision made for you. I think in this situation then you should choose the one that seems to resonate and fit with the applications you are looking to work with. 但或许你是一名学生或过渡职业,可能没有像这样明确的方向来帮助你做出选择。我觉得在这个情况下,你应该选择一个与你感兴趣的应用程序有相近特点的。
Remember I am not looking to become a software developer here I just want to understand a little more about the programming language so that I can read and understand what those tools are doing and then that leads to possibly how we can help improve things. 请记住,我在这里并不是为了成为一名程序开发者。我只是想去更多地了解编程语言,从而让我能够阅读和理解那些工具在做些什么,进而有可能启发我们如何改进相关的工作。
I would also it is also important to know how you interact with those DevOps tools which could be Kasten K10 or it could be Terraform and HCL. These are what we will call config files and this is how you interact with those DevOps tools to make things happen, commonly these are going to be YAML. (We may use the last day of this section to dive a little into YAML) 另一个重要的点是了解如何与DevOps工具(Kasten K10, Terraform 又或是HCL)进行交互。这些就是我们所说的配置文件(config files)它就是帮助你与那些DevOps工具成功交互的东西通常它们会以YAML的格式出现。(我们可能会在本节的最后一天稍微讲解YAML)
## Did I just talk myself out of learning a programming language? ## 我只是自说自话而不是学习编程语言吗?
Most of the time or depending on the role, you will be helping engineering teams implement DevOps into their workflow, a lot of testing around the application and making sure that the workflow that is built aligns to those DevOps principles we mentioned over the first few days. But in reality, this is going to be a lot of the time troubleshooting an application performance issue or something along those lines. This comes back to my original point and reasoning, the programming language I need to know is the one that the code is written in? If their application is written in NodeJS it wont help much if you have a Go or Python badge. 大多数时候或根据担任的角色你会帮助工程团队将DevOps在他们的工作流程中实现。大量围绕应用程序的测试并确保被构建的工作流程符合我们前几天提到的那些DevOps原则。但实际上这个过程将有大量时间花费在寻找程序性能或类似的问题上。这回到了我最初的观点我需要了解那个被用于编写程序源码的编程语言吗如果那个应用程序是用NodeJS编写的而你熟悉的是Go或Python那么这些知识并不能帮助你很多。
## Why Go ## 为什么选Go
Why Golang is the next programming language for DevOps, Go has become a very popular programming language in recent years. According to the StackOverflow Survey for 2021 Go came in fourth for the most wanted Programming, scripting and markup languages with Python being top but hear me out. [StackOverflow 2021 Developer Survey Most Wanted Link](https://insights.stackoverflow.com/survey/2021#section-most-loved-dreaded-and-wanted-programming-scripting-and-markup-languages) 为什么Golang是DevOps的下一个编程语言Go已经成为近年非常流行的编程语言。根据2021年StackOverflow的调查Go在最受欢迎的编程、脚本和标记语言中排名第四其中Python位于榜首但也请继续看完。[StackOverflow 2021 Developer Survey Most Wanted Link](https://insights.stackoverflow.com/survey/2021#section-most-loved-dreaded-and-wanted-programming-scripting-and-markup-languages)
As I have also mentioned some of the most known DevOps tools and platforms are written in Go such as Kubernetes, Docker, Grafana and Prometheus. 正如我提到的那样一些最出名的DevOps工具和平台是用Go来编写的例如Kubernetes、Docker、Grafana和Prometheus。
What are some of the characteristics of Go that make it great for DevOps? 那么Go具备哪些适合DevOps的特性呢
## Build and Deployment of Go Programs ## Go的构建和部署
An advantage of using a language like Python that is interpreted in a DevOps role is that you dont need to compile a python program before running it. Especially for smaller automation tasks, you dont want to be slowed down by a build process that requires compilation even though, Go is a compiled programming language, **Go compiles directly into machine code**. Go is known also for fast compilation times.
## Go vs Python for DevOps 一个优势是就像Python那样具备解释性并且在DevOps工作中你无需在运行程序之前进行编译。特别是对于小规模的自动化任务你不希望在构建的过程中被编译流程拖后腿。Go是一个编译性的编程语言**Go直接完成编译变成机器码**。Go也是出了名的编译速度快。
Go Programs are statically linked, this means that when you compile a go program everything is included in a single binary executable, no external dependencies will be required that would need to be installed on the remote machine, this makes the deployment of go programs easy, compared to python program that uses external libraries you have to make sure that all those libraries are installed on the remote machine that you wish to run on. ## DevOps的Go vs Python
Go is a platform-independent language, which means you can produce binary executables for *all the operating systems, Linux, Windows, macOS etc and very easy to do so. With Python, it is not as easy to create these binary executables for particular operating systems. Go程序是静态链接的这意味着当你编译一个go程序时所有的东西都会被放在一个二进制执行文件里并且不需要在远程机器上安装外部依赖。对比在运行使用了外部库的Python程序时它需要确保所用到的库都已安装在这台远程计算机上这一特点让go程序的部署变得简单。
Go is a very performant language, it has fast compilation and fast run time with lower resource usage like CPU and memory especially compared to python, numerous optimisations have been implemented in the Go language that makes it so performant. (Resources below) Go是一种独立于平台的语言,这意味着你可以很轻松地为\*所有操作系统 Linux、Windows、macOS等等生成二进制可执行文件。而对于Python来说为特定操作系统制作二进制可执行文件就没那么简单了。
Unlike Python which often requires the use of third party libraries to implement a particular python program, go includes a standard library that has the majority of functionality that you would need for DevOps built directly into it. This includes functionality file processing, HTTP web services, JSON processing, native support for concurrency and parallelism as well as built-in testing. Go是一个具备非常高性能的语言它可以快速完成编译并且比Python占用更少的CPU、内存等资源。许多优化已经被应用于Go语言中使其能达到高性能。(详见文末Resources)
This is by no way throwing Python under the bus I am just giving my reasons for choosing Go but they are not the above Go vs Python it's generally because it makes sense as the company I work for develops software in Go so that is why. 与常需要使用第三方库来实现特定程序的Python不同Go包含了一个标准库其中有DevOps所需的大部分功能。包括文件处理功能、HTTP Web服务、JSON处理、对并发和并行的本机支持和内置测试。
I will say that once you have or at least I am told as I am not many pages into this chapter right now, is that once you learn your first programming language it becomes easier to take on other languages. You're probably never going to have a single job in any company anywhere where you don't have to deal with manage, architect, orchestrating, debug JavaScript and Node JS applications. 这篇文章不是让你放弃Python我只是给出我自己选择Go的理由。但这些理由不一定是上面提到的内容通常是因为我工作中用到了Go开发软件所以这是我的原因。
## Resources 我会说一旦你学习了你的第一门编程语言学习其他的语言将变得更简单。你可能不会永远只在一家公司里做一个岗位的工作你很有可能会接触到管理、架构、编排、调试JavaScript和NodeJS的应用程序。
## 相关资料
- [StackOverflow 2021 Developer Survey](https://insights.stackoverflow.com/survey/2021) - [StackOverflow 2021 Developer Survey](https://insights.stackoverflow.com/survey/2021)
- [Why we are choosing Golang to learn](https://www.youtube.com/watch?v=7pLqIIAqZD4&t=9s) - [Why we are choosing Golang to learn](https://www.youtube.com/watch?v=7pLqIIAqZD4&t=9s)
@ -64,6 +65,6 @@ I will say that once you have or at least I am told as I am not many pages into
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s) - [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N) - [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
Now for the next 6 days of this topic my intention is to work through some of the resources listed above and document my notes for each day. You will notice that they are generally around 3 hours as a full course, I wanted to share my complete list so that if you have time you should move ahead and work through each one if time permits, I will be sticking to my learning hour each day. 在未来的6天里我打算通过上述资料来帮助我组织每天的笔记。你会注意到它们作为一整个课程通常需要3个小时来了解。我想分享我的完成列表如果时间允许你应该去每个链接看看我也会每天坚持学习。
See you on [Day 8](day08.md). 让我们[第八天](day08.md)再见。

View File

@ -1,67 +1,67 @@
--- ---
title: '#90DaysOfDevOps - Setting up your DevOps environment for Go & Hello World - Day 8' title: '#90DaysOfDevOps - 配置 Go 语言的 DevOps 环境 & Hello World - 第八天'
published: false published: false
description: 90DaysOfDevOps - Setting up your DevOps environment for Go & Hello World description: 90DaysOfDevOps - 配置 Go 语言的 DevOps 环境 & Hello World
tags: 'devops, 90daysofdevops, learning' tags: 'devops, 90daysofdevops, learning'
cover_image: null cover_image: null
canonical_url: null canonical_url: null
id: 1048857 id: 1048857
--- ---
## Setting up your DevOps environment for Go & Hello World ## 配置Go语言的DevOps环境 & Hello World
Before we get into some of the fundamentals of Go we should get Go installed on our workstation and do what every "learning programming 101" module teaches us which is to create the Hello World app. As this one is going to be walking through the steps to get Go installed on your workstation we are going to attempt to document the process in pictures so people can easily follow along. 在我们开始学习Go的基础知识之前我们要在我们的工作设备上安装Go并按照“学习编程101”的教程来创建Hello World程序。这一小节将一步步在你的机器上完成Go的安装我们会使用截图来记录整个过程从而让大家能更好地跟进。
First of all, let's head on over to [go.dev/dl](https://go.dev/dl/) and you will be greeted with some available options for downloads. 首先,前往[go.dev/dl](https://go.dev/dl/),你会看到一些可供下载的选项。
![](Images/Day8_Go1.png) ![](../../Days/Images/Day8_Go1.png)
If we made it this far you probably know which workstation operating system you are running so select the appropriate download and then we can get installing. I am using Windows for this walkthrough, basically, from this next screen, we can leave all the defaults in place for now. ***(I will note that at the time of writing this was the latest version so screenshots might be out of date)*** 如果你已经知道了你的工作设备运行的是哪个操作系统选择对应的下载选项然后我们就可以开始安装了。在这个演示中我使用的是Windows。基本的从下面的截屏开始我们可以保留所有默认设置。***我在撰写这里的时候这是最新版本,所以截图可能已经过时***
![](Images/Day8_Go2.png) ![](../../Days/Images/Day8_Go2.png)
Also note if you do have an older version of Go installed you will have to remove this before installing, Windows has this built into the installer and will remove and install as one. 另外需要注意如果你安装了较旧版本的Go你应该在安装新版前将它卸载掉。Windows已将它内置到安装程序中并会作为一个整体来删除和安装。
Once finished you should now open a command prompt/terminal and we want to check that we have Go installed. If you do not get the output that we see below then Go is not installed and you will need to retrace your steps. 完成后,你现在应该打开命令提示符/终端我们检查一下是否已安装Go。如果你没有下图的输出那么Go没有安装成功你需要重新进行刚才的步骤。
`go version` `go version`
![](Images/Day8_Go3.png) ![](../../Days/Images/Day8_Go3.png)
Next up we want to check our environment for Go. This is always good to check to make sure your working directories are configured correctly, as you can see below we need to make sure you have the following directory on your system. 接下来我们检查一下Go的环境。这样的检查可以很好地确认你的工作目录配置是正确的你可以看到下图的信息我们需要确保这些地址存在于你的系统中。
![](Images/Day8_Go4.png) ![](../../Days/Images/Day8_Go4.png)
Did you check? Are you following along? You will probably get something like the below if you try and navigate there. 已经检查完了吗?有跟着去操作嘛?如果你尝试去到那里,你很可能会得到类似下图的内容。
![](Images/Day8_Go5.png) ![](../../Days/Images/Day8_Go5.png)
Ok, let's create that directory for ease I am going to use the mkdir command in my powershell terminal. We also need to create 3 folders within the Go folder as you will see also below. OK为了方便起见我们创建新的目录我将在powershell终端中输入mkdir命令。我们还需要在Go文件夹中新建三个文件夹如下图所示。
![](Images/Day8_Go6.png) ![](../../Days/Images/Day8_Go6.png)
Now we have Go installed and we have our Go working directory ready for action. We now need an integrated development environment (IDE) Now there are many out there available that you can use but the most common and the one I use is Visual Studio Code or Code. You can learn more about IDEs [here](https://www.youtube.com/watch?v=vUn5akOlFXQ). 现在我们已经安装好Go并且准备好了我们的Go工作目录。下一步我们需要一个集成开发环境(IDE)。如今已有许多的选择其中一个最常见的也是我使用的是Visual Studio Code或被称为Code。你可以在[这里](https://www.youtube.com/watch?v=vUn5akOlFXQ)了解更多有关IDEs的信息。
If you have not downloaded and installed VSCode already on your workstation then you can do so by heading [here](https://code.visualstudio.com/download). As you can see below you have your different OS options. 如果你还没有在工作设备上下载并安装VSCode那么你可以访问[这里](https://code.visualstudio.com/download)。你会看到如下图中提供了不同操作系统的选项。
![](Images/Day8_Go7.png) ![](../../Days/Images/Day8_Go7.png)
Much the same as with the Go installation we are going to download and install and keep the defaults. Once complete you can open VSCode and you can select Open File and navigate to our Go directory that we created above. 与Go的安装类似的我们会下载并按照默认设置进行安装。完成后你可以打开VSCode然后选择Open File定位到我们之前创建的Go目录。
![](Images/Day8_Go8.png) ![](../../Days/Images/Day8_Go8.png)
You may get a popup about trust, read it if you want and then hit Yes, trust the authors. (I am not responsible later on though if you start opening things you don't trust!) 你会看到一个关于信任(trust)的弹窗如果你感兴趣可以阅读一下然后点击Yes, trust the authors。(如果你打开了自己不信任的东西,我将不负责!)
Now you should see the three folders we also created earlier as well and what we want to do now is right click the src folder and create a new folder called `Hello` 现在你应该会看到之前创建的三个文件夹右键单击sr文件夹并创建一个名为`Hello`的文件夹。
![](Images/Day8_Go9.png) ![](../../Days/Images/Day8_Go9.png)
Pretty easy stuff I would say up till this point? Now we are going to create our first Go Program with no understanding about anything we put in this next phase. 到目前为止的操作应该还是很简单的吧然后哦我们要新建我们的第一个Go程序虽然我们还不理解在下一步里边写的是什么。
Next create a file called `main.go` in your `Hello` folder. As soon as you hit enter on the main.go you will be asked if you want to install the Go extension and also packages you can also check that empty pkg file that we made a few steps back and notice that we should have some new packages in there now? 下一步,在`Hello`文件夹中新建名为`main.go`的文件。一旦你在main.go上按下Enter键你将会被询问是否要安装Go的拓展程序和库。你也可以检查前几步中的空文件夹pkg并发现我们已经添加了一些库在里边
![](Images/Day8_Go10.png) ![](../../Days/Images/Day8_Go10.png)
Now let's get this Hello World app going, copy for the following code into your new main.go file and save that. 将下边的代码复制到main.go中并保存然后运行这个Hello World。
``` ```
package main package main
@ -72,26 +72,28 @@ func main() {
fmt.Println("Hello #90DaysOfDevOps") fmt.Println("Hello #90DaysOfDevOps")
} }
``` ```
Now I appreciate that the above might make no sense at all, but we will cover more about functions, packages and more in later days. For now let's run our app. Back in the terminal and in our Hello folder we can now check that all is working. Using the command below we can check to see if our generic learning program is working. 我承认上边的内容好像并没有什么意义,但我们将在未来介绍更多关于函数(functions)、库(packages)等等的内容。先把我们的程序运行起来。回到终端在Hello文件夹中我们可以检查一切是否正常。如果我们的程序一切正常输入下边的命令将显示预期的结果。
``` ```
go run main.go go run main.go
``` ```
![](Images/Day8_Go11.png) ![](../../Days/Images/Day8_Go11.png)
It doesn't end there though, what if we now want to take our program and run it on other Windows machines? We can do that by building our binary using the following command 到这里还没有完如果我们想让程序在另一台Windows机器上运行该如何操作呢我们可以通过build来构建二进制文件从而做到这一点。
``` ```
go build main.go go build main.go
``` ```
![](Images/Day8_Go12.png) ![](../../Days/Images/Day8_Go12.png)
If we run that 当我们运行它时,可以看到相同的输出:
![](Images/Day8_Go13.png) ```bash
$ ./main.exe
Hello #90DaysOfDevOps
```
## 相关资料
## Resources
- [StackOverflow 2021 Developer Survey](https://insights.stackoverflow.com/survey/2021) - [StackOverflow 2021 Developer Survey](https://insights.stackoverflow.com/survey/2021)
- [Why we are choosing Golang to learn](https://www.youtube.com/watch?v=7pLqIIAqZD4&t=9s) - [Why we are choosing Golang to learn](https://www.youtube.com/watch?v=7pLqIIAqZD4&t=9s)
@ -102,6 +104,6 @@ If we run that
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N) - [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
See you on [Day 9](day09.md). 让我们[第九天](day09.md)见!
![](Images/Day8_Go13.png) ![](../../Days/Images/Day8_Go13.png)

View File

@ -1,71 +1,75 @@
--- ---
title: '#90DaysOfDevOps - Let''s explain the Hello World code - Day 9' title: '#90DaysOfDevOps - 解释 Hello World 代码 - 第九天'
published: false published: false
description: 90DaysOfDevOps - Let's explain the Hello World code description: 90DaysOfDevOps - 解释 Hello World 代码
tags: "devops, 90daysofdevops, learning" tags: "devops, 90daysofdevops, learning"
cover_image: null cover_image: null
canonical_url: null canonical_url: null
id: 1048732 id: 1048732
--- ---
## Let's explain the Hello World code ## 解释 Hello World 代码
### How Go works ### Go是如何工作的
On [Day 8](day08.md) we walked through getting Go installed on your workstation and we then created our first Go application. 在[第八天](day08.md)我们完成了Go在工作站上的安装同时创建了第一个Go程序。
In this section, we are going to take a deeper look into the code and understand a few more things about the Go language.
### What is Compiling? 在这节我们将更深入学习这些代码了解更多Go语言的内容。
Before we get into the [6 lines of the Hello World code](Go/hello.go) we need to have a bit of an understanding about compiling.
Programming languages that we commonly use such as Python, Java, Go and C++ are high-level languages. Meaning they are human-readable but when a machine is trying to execute a program it needs to be in a form that a machine can understand. We have to translate our human-readable code to machine code which is called compiling. ### 什么是编译?
![](Images/Day9_Go1.png) 在开始[Hello World的6行代码](Go/hello.go)之前,我们需要对编译有一些了解。
From the above you can see what we did on [Day 8](day08.md) here, we created a simple Hello World main.go and we then used the command `go build main.go` to compile our executable. 像Python、Java、Go和C++这类我们常用的编程语言都是高级语言(high-level languages)。这意味着它们是可以被人们直接阅读的。但当机器想去执行一个程序时,它需要将这些语言转换成机器能读懂的形式。而这个将人类能读懂的代码翻译成机器码的过程被成为编译(compiling)。
### What are packages? ![](../../Days/Images/Day9_Go1.png)
A package is a collection of source files in the same directory that are compiled together. We can simplify this further, a package is a bunch of .go files in the same directory. Remember our Hello folder from Day 8? If and when you get into more complex Go programs you might find that you have folder1 folder2 and folder3 containing different .go files that make up your program with multiple packages.
We use packages so we can reuse other peoples code, we don't have to write everything from scratch. Maybe we are wanting a calculator as part of our program, you could probably find an existing Go Package that contains the mathematical functions that you could import into your code saving you a lot of time and effort in the long run. 从上图可以看到,我们在[第八天](day08.md)做的事情。我们创建了一个简单的Hello World程序main.go然后使用`go build main.go`命令去将它编译成可执行文件。
Go encourages you to organise your code in packages so that it is easy to reuse and maintain source code. ### 什么是包(packages)
### Hello #90DaysOfDevOps Line by Line 包(package),是在同一目录下编译到一起的源文件的集合。我们可以简单理解为,一个包是同一目录下的一堆\*.go文件。还记得第八天的Hello文件夹吗当你去学习更复杂的Go程序时你可能会发现你有多个包含.go文件的文件夹(folder1, folder2和folder3...),所以你的程序是由多个包构成的。
Now let's take a look at our Hello #90DaysOfDevOps main.go file and walk through the lines.
![](Images/Day9_Go2.png) 因此我们可以通过使用包来复用别人的代码并且不必将所有东西从头开始写。或许我们希望程序中有一个计算功能你可能找到一个现成的、可以被导入的、包含了数学计算的Go包。长远来看这种做法可以为你节省大量时间和精力。
In the first line, you have `package main` which means that this file belongs to a package called main. All .go files need to belong to a package, they should also have `package something` in the opening line. Go鼓励你将代码组织成不同的包从而方便后续复用和维护。
A package can be named whatever you wish. We have to call this `main` as this is the starting point of the program that is going to be in this package, this is a rule. (I need to understand more about this rule?) ### 逐行来看Hello \#90DaysOfDevOps
![](Images/Day9_Go3.png) 让我们去到Hello文件夹里的main.go文件并看看每行在做什么。
Whenever we want to compile and execute our code we have to tell the machine where the execution needs to start. We do this by writing a function called main. The machine will look for a function called main to find the entry point of the program. ![](../../Days/Images/Day9_Go2.png)
A function is a block of code that can do some specific task for and can be used across the program. 在第一行,`package main`声明了这个文件属于一个叫main的包。所有的.go文件都需要被归属到一个包里它们的开头会有`package something`的字样。
You can declare a function with any name using `func` but in this case we need to name it `main` as this is where the code starts. 一个包可以任意命名。我们称`main`为这个包中的程序的起点,这是一个规则。(我需要更多地了解这条规则吗?)
![](Images/Day9_Go4.png) ![](../../Days/Images/Day9_Go3.png)
Next we are going to look at line 3 of our code, the import, this basically means you want to bring in another package to your main program. fmt is a standard package being used here provided by Go, this package contains the `Println()`function and because we have imported this we can use this in line 6. There are a number of standard packages you can include in your program and leverage or reuse them in your code saving you the hassle of having to write from scratch. [Go Standard Library](https://pkg.go.dev/std) 每当我们想要编译并运行代码时我们都要告诉机器从那里开始执行。于是我们会编写一个叫main的函数。机器将会寻找名叫main的函数作为程序的入口。
![](Images/Day9_Go5.png) 函数是一个可以在整个程序中使用的、执行特定任务的代码块。
the `Println()` that we have here is a way in which to write to a standard output to the terminal where ever the executuable has been executed succesfully. Feel free to change the message in between the (). 你可以使用`func`声明任意名称的函数,只是在我们的例子中,我们需要命名`main`作为代码的起始点。
![](Images/Day9_Go6.png) ![](../../Days/Images/Day9_Go4.png)
### TLDR 接下来到第3行import意味着你要在main程序里引入另一个包。fmt是Go提供的一个标准包里边包含了将在第六行使用的`Println()`函数。也有很多标准库可以被应用在你的程序中,利用或重用它们可以省去你从头写起的麻烦。[Go的标准包](https://pkg.go.dev/st)
- **Line 1** = This file will be in the package called `main` and this needs to be called `main` because includes the entry point of the program. ![](../../Days/Images/Day9_Go5.png)
- **Line 3** = For us to use the `Println()` we have to import the fmt package to use this on line 6.
- **Line 5** = The actual starting point, its the `main` function.
- **Line 6** = This will let us print "Hello #90DaysOfDevOps" on our system.
## Resources 这里的`Println()`是一个将标准输出写入终端的一个方法,当程序被成功执行,信息将会被打印出来。你可以随意更改括号里的内容。
![](../../Days/Images/Day9_Go6.png)
### 总结
- **第1行** = 这个文件位于名为`main`的包中,因为其中包含程序的入口`main`,所以被称为`main`。
- **第3行** = 我们要导入fmt包后再在第六行使用`Println()`。
- **第5行** = 实际的入口,`main`函数。
- **第6行** = 这将在我们的系统上打印"Hello #90DaysOfDevOps"。
## 相关资料
- [StackOverflow 2021 Developer Survey](https://insights.stackoverflow.com/survey/2021) - [StackOverflow 2021 Developer Survey](https://insights.stackoverflow.com/survey/2021)
- [Why we are choosing Golang to learn](https://www.youtube.com/watch?v=7pLqIIAqZD4&t=9s) - [Why we are choosing Golang to learn](https://www.youtube.com/watch?v=7pLqIIAqZD4&t=9s)
@ -75,4 +79,4 @@ the `Println()` that we have here is a way in which to write to a standard outpu
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s) - [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N) - [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
See you on [Day 10](day10.md). [第十天](day10.md)见。

View File

@ -1,87 +1,95 @@
--- ---
title: '#90DaysOfDevOps - The Go Workspace - Day 10' title: '#90DaysOfDevOps - Go 工作空间及编译运行 - 第十天'
published: false published: false
description: 90DaysOfDevOps - The Go Workspace description: 90DaysOfDevOps - Go 工作空间及编译运行
tags: "devops, 90daysofdevops, learning" tags: "devops, 90daysofdevops, learning"
cover_image: null cover_image: null
canonical_url: null canonical_url: null
id: 1048701 id: 1048701
--- ---
### The Go Workspace
On [Day 8](day08.md) we briefly covered the Go workspace to get Go up and running to get to the demo of `Hello #90DaysOfDevOps` But we should explain a little more about the Go workspace.
Remember we chose the defaults and we then went through and created our Go folder in the GOPATH that was already defined but in reality, this GOPATH can be changed to be wherever you want it to be. ### Go工作区
If you run 在[第8天](day08.md)我们简单介绍了Go工作区并启动和运行了`Hello #90DaysOfDevOps`的演示。但我们应该更多地谈一下Go工作区(workspace)。
还记得我们选用了默认值然后在已定义好的GOPATH中创建了我们的Go文件夹。实际上GOPATH可以被更改为任意位置。
如果你运行
``` ```
echo $GOPATH echo $GOPATH
``` ```
The output should be similar to mine (with a different username may be) which is:
输出应该和我的类似(可能用户名会不同)
``` ```
/home/michael/projects/go /home/michael/projects/go
``` ```
Then within here, we created 3 directories. **src**, **pkg** and **bin**
![](Images/Day10_Go1.png) 然后我们在这个路径下创建了三个文件夹,**src**、**pkg**和**bin**。
**src** is where all of your Go programs and projects are stored. This handles namespacing package management for all your Go repositories. This is where you will see on our workstation we have our Hello folder for the Hello #90DaysOfDevOps project. ![](../../Days/Images/Day10_Go1.png)
![](Images/Day10_Go2.png) **src**是存放所有Go程序和项目的地方。这可以处理帮助你解决所有Go存储库的管理。下图是我工作站上的内容我们有存放Hello #90DaysOfDevOps这个项目的Hello文件夹
**pkg** is where your archived files of packages that are or were installed in programs. This helps to speed up the compiling process based on if the packages being used have been modified. ![](../../Days/Images/Day10_Go2.png)
![](Images/Day10_Go3.png) **pkg**是你存放安装或已安装程序包的地方。这有助于根据正使用的包是否被修改来加快编译速度。
**bin** is where all of your compiled binaries are stored. ![](../../Days/Images/Day10_Go3.png)
![](Images/Day10_Go4.png) **bin**是存放所有已编译二进制文件的地方。
Our Hello #90DaysOfDevOps is not a complex program so here is an example of a more complex Go Program taken from another great resource worth looking at [GoChronicles](https://gochronicles.com/) ![](../../Days/Images/Day10_Go4.png)
![](Images/Day10_Go5.png) 我们的Hello #90DaysOfDevOps不是一个复杂的程序。下面是一个较复杂的Go程序演示取自另一个值得看的资源[GoChronicles](https://gochronicles.com/)
This page also goes into some great detail about why and how the layout is like this it also goes a little deeper on other folders we have not mentioned [GoChronicles](https://gochronicles.com/project-structure/) ![](../../Days/Images/Day10_Go5.png)
### Compiling & running code 在[GoChronicles](https://gochronicles.com/project-structure/)中还详细介绍了布局的原因和方式,并在我们未提及的其他文件夹方面做出了更深入的介绍。
On [Day 9](day09.md) we also covered a brief introduction to compiling code, but we can go a little deeper here.
To run our code we first must **compile** it. There are three ways to do this within Go. ### 编译 & 运行代码
在[第9天](day09.md),我们简单介绍了代码编译,这里我们可以更深入了解一下。
想要运行我们的代码,第一步必须是**编译**它。在Go中有三种方式
- go build - go build
- go install - go install
- go run - go run
Before we get to the above compile stage we need to take a look at what we get with the Go Installation. 在我们讲解以上的编译方式之前我们需要了解Go安装了什么。
When we installed Go on Day 8 this installed something known as Go tools which consist of several programs that let us build and process our Go source files. One of the tools is `Go` 我们在第8天安装Go时它安装了被称为Go工具的东西。其中包括了一些程序让我们构建和处理我们的Go源文件。其中一个工具是`Go`。
It is worth noting that you can install additional tools that are not in the standard Go installation. 值得注意的是你可以安装标准Go安装以外的工具。
If you open your command prompt and type `go` you should see something like the image below and then you will see "Additional Help Topics" below that for now we don't need to worry about those. 如果你打开打开命令提示符,然后输入`go`,你会看到一些类似下图的内容。然后那你可以看到下边的“其他帮助主题”,但现在我们不需要去担心这些。
![](Images/Day10_Go6.png) ![](../../Days/Images/Day10_Go6.png)
You might also remember that we have already used at least two of these tools so far on Day 8. 你可能还记得我们已经在第8天中使用了至少其中两个工具。
![](Images/Day10_Go7.png) ![](../../Days/Images/Day10_Go7.png)
The ones we want to learn more about are build, install and run. 其中,我们将了解更多构建、安装和运行的内容(build, install and run)。
![](Images/Day10_Go8.png) ![](../../Days/Images/Day10_Go8.png)
- `go run` - This command compiles and runs the main package comprised of the .go files specified on the command line. The command is compiled to a temporary folder. - `go run` - 编译和运行命令行中指定的.go文件组成的main包。这个命令会被编译到一个临时文件夹里。
- `go build` - To compile packages and dependencies, compile the package in the current directory. If the `main` package, will place the executable in the current directory if not then it will place the executable in the `pkg` folder. `go build` also enables you to build an executable file for any Go Supported OS platform. - `go build` - 为了编译包和依赖,在当前文件夹中编译这个包。如果是`main`包,则会把可执行文件放在当前目录中;如果不是,则会把可执行文件放在`pkg`文件夹中。`go build`也能为任何Go支持的操作系统平台构建可执行文件。
- `go install` - The same as go build but will place the executable in the `bin` folder - `go install` - 与`go build`相同,但它会把可执行文件存放在`bin`文件夹中。
We have run through go build and go run but feel free to run through them again here if you wish, `go install` as stated above puts the executable in our bin folder.
![](Images/Day10_Go9.png) 我们已经运行了`go build`和`go run`,如果你想的话,可以在这里多次循行它们。就如前面说到的,`go install`将可执行文件放在我们的bin文件夹中。
Hopefully, if you are following along you are watching one of the playlists or videos below, I am taking bits of all of these and translating these into my notes so that I can understand the foundational knowledge of the Golang language. The resources below are likely going to give you a much better understanding of a lot of the areas you need overall but I am trying to document the 7 days or 7 hours worth of the journey with interesting things that I have found.
## Resources ![](../../Days/Images/Day10_Go9.png)
如果你正在观看下面的视频我会收集这些内容并记录在我的笔记中方便我理解Golang的基础知识。下面的资源能帮助你更好地理解你可能需要的领域而我想基于我搜集到的资料在记录这7天或7个小时的学习分享。
## 相关资料
- [StackOverflow 2021 Developer Survey](https://insights.stackoverflow.com/survey/2021) - [StackOverflow 2021 Developer Survey](https://insights.stackoverflow.com/survey/2021)
- [Why we are choosing Golang to learn](https://www.youtube.com/watch?v=7pLqIIAqZD4&t=9s) - [Why we are choosing Golang to learn](https://www.youtube.com/watch?v=7pLqIIAqZD4&t=9s)
@ -91,4 +99,4 @@ Hopefully, if you are following along you are watching one of the playlists or v
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s) - [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N) - [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
See you on [Day 11](day11.md). [第十一天](day11.md)见。