搜索
首页后端开发Golang学习 Golang 的最佳资源

学习 Golang 的最佳资源

Sep 08, 2024 am 06:32 AM

你好!我还没有自我介绍,因为我还没有机会。我的名字是 Harutyun {ha.root.eeoon},我是一名软件工程师和热情的 Golang 开发人员。我真的很喜欢这门语言,并且喜欢使用它的工具链。过去五年我一直在使用 Go。在转向 Golang 之前,我是一名全栈开发人员,主要后端语言是 PHP,前端语言是 JS + jQuery。

当时,我注意到许多公司正在从 Ruby、NodeJS 和 PHP 过渡到 Golang,以改善延迟、引入并发性并为其产品启用后台任务执行。我看到的第一篇文章是在 Shopify 的博客上,解释了如何切换到 Golang 将其服务延迟提高了 80%。我对这篇文章很着迷,并开始阅读参考文献、语言概念和 Golang 官方博客,以更好地理解这门语言。

继 PHP 之后,Golang 感觉就像呼吸了一口新鲜空气——一切都很快,快得令人难以置信。我记得我编写的第一个程序:用于阿波罗任务的一些开源 NASA 数据的文件校验和验证器。它涉及五个文件的集合,每个文件大小约为 2GB。看到 1.4 秒的执行时间让我大吃一惊。在那一刻,我知道我必须将堆栈切换到 Golang 才能创建和开发出色的软件。

在本文中,我想分享一些帮助我成为 Golang 工程师的资源,并继续帮助我开发新技能,同时了解最新技术。

书籍:圣特里亚达

The Best Resources for Learning Golang

使用 Go 进行编程 作者:Nathan Youngman 和 Roger Peppé

如果您刚刚开始使用 Go,并且想要一本让学习过程变得简单易懂的书,我强烈推荐 Nathan Youngman 和 Roger Peppé 所著的《使用 Go 进行编程》。这本书非常适合初学者,因为它真正关注基础知识,而不会一次性让太多信息压倒你。这本书的伟大之处在于它清晰地解释了一切。它从头开始,逐步引导您了解 Go 的核心概念。您将学习一些基本知识,例如如何声明变量、使用循环和编写函数,但作者以一种非常容易理解的方式做到这一点——即使您没有大量的编程经验。

如果您是 Go 新手,甚至是一般编程新手,“使用 Go 进行编程” 是最好的起点之一。它旨在帮助您在语言方面打下坚实的基础,而不会感到迷失或沮丧,当您完成后,您将对 Go 的工作原理有深入的了解。我真正喜欢的一件事是,这本书并不假设你已经了解一堆其他编程语言。它用简单的语言编写,专注于帮助您以简单、直接的方式理解 Go 的语法和结构。它还涵盖了 Go 的独特方法,例如错误处理和内存管理,但同样,以一种非常适合初学者的方式。

学习 Go 作者:Jon Bodner

如果您已经完成了“使用 Go 进行编程”并且希望将您的 Go 技能提升到一个新的水平,我强烈建议您继续学习“学习 Go” 乔恩·博德纳。虽然“使用 Go 进行编程”为您提供了坚实的基础,并以非常适合初学者的方式介绍了该语言,但“学习 Go” 更深入地了解了该语言更复杂的方面,非常适合当您准备好更详细地探索 Go 了。

本书以基础知识为基础,真正帮助您理解 Go 的复杂性,例如它的并发模型、接口和错误处理。第一本书侧重于帮助您入门,“学习 Go” 更深入地探讨了 Go 的独特功能,它让您更清楚地了解如何编写更高效、可维护的代码。这些解释仍然非常平易近人,但更全面,涵盖了您可能尚未解决的概念。因此,如果您已完成“使用 Go 进行编程”并准备好更深入地学习,“学习 Go” 是完美的下一步。这是继续你的 Go 之旅并真正掌握这门语言的好方法。

囲碁の 100 の間違いとその回避方法 著:Teiva Harsanyi

「Get Programming with Go」 で強固な基礎を構築し、「Learning Go」 で Go の中心概念を深く掘り下げた後、言語を習得するための次の当然のステップは 「囲碁の 100 の間違いとその回避方法」、Teiva Harsanyi 著。この本は、言語の学習からスキルの磨き上げ、経験豊富な開発者でも遭遇するよくある落とし穴の回避へと焦点を移すため、Go の旅の完璧な継続となります。

前の 2 冊の本は、Go の仕組みとその機能の使用方法を理解するのに役立ちましたが、「100 Go Mistakes」 では、現実世界でつまづきやすい間違いを強調することで、より実践的で実践的なアプローチを採用しています。開発者とそれらを避ける方法について説明します。これは、他の人の経験から学んで専門知識を磨きたい開発者にとって素晴らしいリソースです。この本では、同時実行性、エラー処理、テスト、メモリ管理など、幅広いトピックにわたる間違いを取り上げ、より堅牢で効率的でバグのない Go コードを作成する方法についての洞察を提供します。これは、コーディングのベスト プラクティスだけではなく、特定のアプローチが最初は正しいように見えても、後で微妙なエラーにつながる可能性がある理由の背後にある深い理由を理解することを意味します。この本は、Go スキルを向上させ、コードについてより批判的に考えるのに役立ち、よりプロフェッショナル レベルの Go プログラムの作成を進める際によくある罠を確実に回避するのに非常に貴重です。

各本は前の本を基にして構築されており、基本から Go の複雑さをマスターするまでの包括的な学習を保証します。 「Get Programming with Go」 から始めて、シンプルで初心者に優しい方法で言語を紹介し、しっかりとした基礎を確立します。 「Go を学ぶ」 では、Go の中核となる機能と概念をさらに深く掘り下げ、言語の機能をより完全に理解できるようにします。最後に、「Go の 100 の間違いとその回避方法」 では、実践的な現実世界のアドバイスに焦点を当てており、よくある落とし穴を特定して回避し、より効率的で自信を持って Go 開発者になれるように支援します。

ボーナスブック

The Best Resources for Learning Golang

Go でのテスト駆動開発 by Adelina Simion

Adelina Simion による

「Go でのテスト駆動開発」 は、私のコレクションに新しく追加されたものです。本書は、TDD に対する斬新な視点と最新のアプローチにより、最新の開発慣行に対応しながら、信頼性が高く徹底的にテストされた Go コードを作成する開発者の能力をさらに強化します。この本では、Go コードが機能するだけでなく、堅牢で保守しやすいものであることを保証する、テスト駆動開発の導入について説明します。最初にテストの作成に集中し、それをコーディング プロセスのガイドとして使用することで、高品質のコードを作成するためのより深い洞察が得られます。

ブログ: Go Wisdom と Witty Wonders

Research!rsc: プログラミングに関する考えとリンク、Russ Cox 著

https://research.swtch.com

これは、Go プログラミング言語の重要な貢献者である Russ Cox の個人ブログです。 Russ Cox は Go の最初の開発者の 1 人であり、Go 言語、その開発、およびソフトウェア エンジニアリングの概念全般について幅広く執筆しています。彼のブログでは、特に Go の設計上の決定、ツール、同時実行モデル、パフォーマンスの最適化など、深い技術的なトピックを取り上げています。これは、Go の進化を洞察し、言語の多くの機能の背後にある理論的根拠を理解するための優れたリソースです。 Cox は、プログラミング言語、コンパイラー、コンピューター サイエンス理論に関連する幅広いトピックについても執筆しています。これは、Go の複雑さを知りたい開発者にとって頼りになる書籍であり、実際的な問題を解決するために Go がどのように設計されているかについて独自の視点を提供します。

デイブ・チェイニー:愚かさの極み

https://dave.cheney.net

Dave Cheney は Go コミュニティの著名な人物であり、特にパフォーマンスの最適化、エラー処理、ベスト プラクティスなどの分野でこの言語に多大な貢献をしてきました。彼のブログは、慣用的で効率的な Go コードの作成に関する詳細で実践的なアドバイスを提供することでよく知られています。彼が取り上げるトピックには、Go の同時実行モデル、メモリ管理、テスト戦略、パフォーマンス チューニングなどがあります。 Dave は複雑なトピックを分かりやすい方法で分解することでも知られており、彼のブログは初心者と上級 Go 開発者の両方にとって優れたリソースとなっています。彼は、一般的な Go 設計パターン、パフォーマンスの落とし穴、言語の機能を最大限に活用する方法について執筆し、開発者がより堅牢で保守しやすい Go プログラムを作成するのに役立つヒントを提供しています。 Go についての理解を深めたり、高度なテクニックを探求したい場合は、Dave Cheney のブログが素晴らしいリソースです。

ジュリア・エヴァンスのブログ

https://jvns.ca

Julia のブログは Go だけを扱っているわけではありませんが、システム プログラミング、デバッグ、ネットワーキング、場合によっては Go など、幅広い技術的なトピックに関する親しみやすく洞察力に富んだ投稿でよく知られています。彼女の文体はカジュアルで非常に読みやすいため、初心者でも複雑なテーマを理解しやすくなっています。 Julia を際立たせている点の 1 つは、ネットワークの基礎であれ、オペレーティング システムの動作であれ、複雑な概念を取り上げ、それをシンプルでわかりやすい投稿に分解する能力です。彼女は技術コンテンツをより魅力的にするために ZINE やイラストをよく使用しますが、これは彼女のブログのユニークな側面です。 Go が主な焦点ではありませんが、彼女が Go について書くときは、実用的なシステムレベルの観点から書かれています。システム プログラミングに興味があり、Go がその世界にどのように適合するかを知りたい場合は、Julia Evans のブログが素晴らしいリソースです!

囲碁ブログ

https://go.dev/blog/

Google の Go チームによって管理されている、Go プログラミング言語の公式ブログ。このブログでは、新しいリリース、機能、設計上の決定、コミュニティの更新について取り上げます。これは、コア開発者の視点から Go を理解するための優れた情報源です。これは、Go プログラミング言語に関する最新情報、ニュース、詳細な投稿の主要な情報源であり、Google のコア Go 開発チームによって維持されています。このブログでは、次のような幅広いトピックを取り上げます。

  • 新しい Go リリース: 機能、バグ修正、改善点など、各バージョンの新機能について詳しく説明します。
  • 言語設計の決定: 特定の機能が追加された理由、または Go がどのように進化し続けるかについての洞察。
  • ベスト プラクティス: パフォーマンスの最適化、メモリ管理、同時実行性に関するヒントなど、Go をより効果的に使用する方法に関する記事。
  • コミュニティとエコシステムの最新情報: コミュニティ プロジェクト、Go カンファレンス、Go エコシステムを強化するツールのハイライト。

便利な電報チャンネル

残念ながら、これらはロシア専用のチャンネルであり、投稿のほとんどはロシアの情報源からのものであるため、多くの人にとっては適切ではないかもしれません。しかし、ロシア語を知っていれば大丈夫です!

  • @goproglib - Go 開発者にとって最も役立つすべてのものを 1 つのチャンネルにまとめました。
  • @go_in_action - Go プログラミング言語に関するすべて (ロシア語と英語)
  • @golangtests - Golang の課題
  • @golang_interview - Golang の課題と面接準備リソース

結論

Go を学ぶことはやりがいのある旅であり、適切なリソースがあれば大きな違いが生まれます。始めたばかりの場合でも、より高度な概念を深く掘り下げようとしている場合でも、ここで紹介するブログや書籍は貴重な​​洞察とガイダンスを提供します。基本の習得からよくある落とし穴の回避まで、これらのリソースは、効果的かつ自信を持って囲碁スキルを向上できるように慎重に厳選されています。

Go の探索を続けるときは、Go コミュニティの強さはその強力な言語だけでなく、知識を共有しようとする意欲にもあることを忘れないでください。現在利用できるリソースは、お客様の成功を支援したいと考えている無数の貢献者の多大な努力と献身的な努力を反映しています。 Go には無限の可能性があるため、飛び込んで学び続け、そのプロセスを楽しんでください!

Go コミュニティに多大なる感謝を!

囲碁の学習をこれほど価値のあるものにしてくれた素晴らしいリソースに感謝の意を表したいと思います。言語設計とパフォーマンスに関する詳細なブログ投稿から、効率的で慣用的なコードを記述するための実践的なアドバイスまで、コミュニティの多くの人々の貢献は非常に貴重です。これらのリソースの背後にある明快さ、情熱、献身は、私を含む数え切れないほどの開発者の改善と成長に役立ちました。

私たち全員にとって Go をとても楽しく充実した旅にしてくれてありがとう!

以上是学习 Golang 的最佳资源的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
与GO接口键入断言和类型开关与GO接口键入断言和类型开关May 02, 2025 am 12:20 AM

Gohandlesinterfacesandtypeassertionseffectively,enhancingcodeflexibilityandrobustness.1)Typeassertionsallowruntimetypechecking,asseenwiththeShapeinterfaceandCircletype.2)Typeswitcheshandlemultipletypesefficiently,usefulforvariousshapesimplementingthe

使用errors.is和错误。使用errors.is和错误。May 02, 2025 am 12:11 AM

Go语言的错误处理通过errors.Is和errors.As函数变得更加灵活和可读。1.errors.Is用于检查错误是否与指定错误相同,适用于错误链的处理。2.errors.As不仅能检查错误类型,还能将错误转换为具体类型,方便提取错误信息。使用这些函数可以简化错误处理逻辑,但需注意错误链的正确传递和避免过度依赖以防代码复杂化。

在GO中进行性能调整:优化您的应用程序在GO中进行性能调整:优化您的应用程序May 02, 2025 am 12:06 AM

tomakegoapplicationsRunfasterandMorefly,useProflingTools,leverageConCurrency,andManageMoryfectily.1)usepprofforcpuorforcpuandmemoryproflingtoidentifybottlenecks.2)upitizegorizegoroutizegoroutinesandchannelstoparalletaparelalyizetasksandimproverperformance.3)

GO的未来:趋势和发展GO的未来:趋势和发展May 02, 2025 am 12:01 AM

go'sfutureisbrightwithtrendslikeMprikeMprikeTooling,仿制药,云 - 纳蒂维德象,performanceEnhancements,andwebassemblyIntegration,butchallengeSinclainSinClainSinClainSiNgeNingsImpliCityInsImplicityAndimimprovingingRornhandRornrorlling。

了解Goroutines:深入研究GO的并发了解Goroutines:深入研究GO的并发May 01, 2025 am 12:18 AM

goroutinesarefunctionsormethodsthatruncurranceingo,启用效率和灯威量。1)shememanagedbodo'sruntimemultimusingmultiplexing,允许千sstorunonfewerosthreads.2)goroutinessimproverentimensImproutinesImproutinesImproveranceThroutinesImproveranceThrountinesimproveranceThroundinesImproveranceThroughEasySytaskParallowalizationAndeff

了解GO中的初始功能:目的和用法了解GO中的初始功能:目的和用法May 01, 2025 am 12:16 AM

purposeoftheInitfunctionoIsistoInitializeVariables,setUpConfigurations,orperformneccesSetarySetupBeforEtheMainFunctionExeCutes.useInitby.UseInitby:1)placingitinyourcodetorunautoamenationally oneraty oneraty oneraty on inity in ofideShortAndAndAndAndForemain,2)keepitiTshortAntAndFocusedonSimImimpletasks,3)

了解GO界面:综合指南了解GO界面:综合指南May 01, 2025 am 12:13 AM

Gointerfacesaremethodsignaturesetsthattypesmustimplement,enablingpolymorphismwithoutinheritanceforcleaner,modularcode.Theyareimplicitlysatisfied,usefulforflexibleAPIsanddecoupling,butrequirecarefulusetoavoidruntimeerrorsandmaintaintypesafety.

从恐慌中恢复:何时以及如何使用recover()从恐慌中恢复:何时以及如何使用recover()May 01, 2025 am 12:04 AM

在Go中使用recover()函数可以从panic中恢复。具体方法是:1)在defer函数中使用recover()捕获panic,避免程序崩溃;2)记录详细的错误信息以便调试;3)根据具体情况决定是否恢复程序执行;4)谨慎使用,以免影响性能。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!