{"id":13415331,"url":"https://github.com/ardanlabs/gotraining","last_synced_at":"2025-12-17T15:37:34.303Z","repository":{"id":18251195,"uuid":"21405028","full_name":"ardanlabs/gotraining","owner":"ardanlabs","description":"Go Training Class Material : ","archived":false,"fork":false,"pushed_at":"2025-10-08T05:40:01.000Z","size":115938,"stargazers_count":12090,"open_issues_count":0,"forks_count":2195,"subscribers_count":464,"default_branch":"master","last_synced_at":"2025-10-08T07:23:30.656Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.ArdanLabs.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ardanlabs.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-07-01T23:12:46.000Z","updated_at":"2025-10-08T06:42:05.000Z","dependencies_parsed_at":"2023-01-14T00:30:19.626Z","dependency_job_id":"0e5c57a3-d675-4c7c-826b-babbc373a04b","html_url":"https://github.com/ardanlabs/gotraining","commit_stats":{"total_commits":2838,"total_committers":155,"mean_commits":"18.309677419354838","dds":0.2431289640591966,"last_synced_commit":"38a571550dcb92071f5936a4173a8773886ac36f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ardanlabs/gotraining","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ardanlabs%2Fgotraining","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ardanlabs%2Fgotraining/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ardanlabs%2Fgotraining/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ardanlabs%2Fgotraining/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ardanlabs","download_url":"https://codeload.github.com/ardanlabs/gotraining/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ardanlabs%2Fgotraining/sbom","scorecard":{"id":205824,"data":{"date":"2025-08-11","repo":{"name":"github.com/ardanlabs/gotraining","commit":"b58111ff2fe807a4c50d5bd59a74506257dfa3c3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":1,"reason":"Found 4/23 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":3,"reason":"4 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating golang:1.11-alpine3.8 to golang:1.11-alpine3.8@sha256:6f840f22327fcb912704687e3e87fc7ef8fb2af148b8581b301f5a9a7f303727","Warn: containerImage not pinned by hash: topics/go/videos/miki/building/cgo/Dockerfile:1","Warn: containerImage not pinned by hash: topics/go/videos/miki/building/cgo/Dockerfile:7: pin your Docker image by updating alpine:3.15 to alpine:3.15@sha256:19b4bcc4f60e99dd5ebdca0cbce22c503bbcff197549d7e19dab4f22254dc864","Info:   0 out of   3 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T23:43:36.195Z","repository_id":18251195,"created_at":"2025-08-16T23:43:36.195Z","updated_at":"2025-08-16T23:43:36.195Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27784419,"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","status":"online","status_checked_at":"2025-12-17T02:00:08.291Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-07-30T21:00:47.230Z","updated_at":"2025-12-17T15:37:34.296Z","avatar_url":"https://github.com/ardanlabs.png","language":"Go","readme":"## Go Training\n\n[![CircleCI](https://circleci.com/gh/ardanlabs/gotraining.svg?style=svg)](https://circleci.com/gh/ardanlabs/gotraining)\n\n[Review our different courses and material](topics/README.md)\n\nCopyright 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, Ardan Labs  \nhello@ardanlabs.com\n\n## Learn More\n\n**Reach out about corporate training events, open enrollment live training sessions, and on-demand learning options.**\n\nArdan Labs (www.ardanlabs.com)  \nhello@ardanlabs.com\n\nTo attend any of our high-performance tranings check out this link:  \nhttps://www.ardanlabs.com/training\n\n## Index\n\n- [Purchase Video](https://github.com/ardanlabs/gotraining#purchase-video--book)\n- [Experience](https://github.com/ardanlabs/gotraining#our-experience)\n- [Teachers](https://github.com/ardanlabs/gotraining#our-teachers)\n- [More About Go](https://github.com/ardanlabs/gotraining#more-about-go)\n- [Minimal Qualified Student](https://github.com/ardanlabs/gotraining#minimal-qualified-student)\n- [Important Reading](https://github.com/ardanlabs/gotraining#important-reading)\n- [Before You Come To Class](https://github.com/ardanlabs/gotraining#before-you-come-to-class)\n- [Twitter Reactions](https://github.com/ardanlabs/gotraining#twitter)\n- [Testimonials](https://github.com/ardanlabs/gotraining#testimonials)\n\n## Purchase Video / Book\n\nThe entire training class has been recorded to be made available to those who can't have the class taught at their company or who can't attend a conference. This is the entire class material.\n\n[education.ardanlabs.com](https://education.ardanlabs.com)\n\nThere is a book for all of the material in the class.\n\n[Ultimate Go Notebook](https://education.ardanlabs.com/courses/ultimate-go-notebook)\n\n## Our Experience\n\nWe have taught Go to thousands of developers all around the world since 2014. There is no other company that has been doing it longer and our material has proven to help jump-start developers 6 to 12 months ahead of their knowledge of Go. We know what knowledge developers need in order to be productive and efficient when writing software in Go.\n\nOur classes are perfect for intermediate-level developers who have at least a few months to years of experience writing code in Go. Our classes provide a very deep knowledge of the programming language with a big push on language mechanics, design philosophies and guidelines. We focus on teaching how to write code with a priority on consistency, integrity, readability and simplicity. We cover a lot about “if performance matters” with a focus on mechanical sympathy, data oriented design, decoupling and writing/debugging production software.\n\n## Our Teachers\n\n### William Kennedy ([@goinggodotnet](https://twitter.com/goinggodotnet))\n\n_William Kennedy is a managing partner at Ardan Labs in Miami, Florida. Ardan Labs is a high-performance development and training firm working with startups and fortune 500 companies. He is also a co-author of the book Go in Action, the author of the blog GoingGo.Net, and a founding member of GoBridge which is working to increase Go adoption through diversity._\n\n_**Video Training**_  \n[Ultimate Go Video](https://education.ardanlabs.com)  \n[Ardan Labs YouTube Channel](http://youtube.ardanlabs.com/)\n\n_**Blog**_  \n[Going Go](https://www.ardanlabs.com/blog/)\n\n_**Writing**_  \n[Running MongoDB Queries Concurrently With Go](http://blog.mongodb.org/post/80579086742/running-mongodb-queries-concurrently-with-go)  \n[Go In Action](https://www.manning.com/books/go-in-action)\n\n_**Articles**_  \n[IT World Canada](http://www.itworldcanada.com/article/nascent-google-development-language-shows-promise-for-more-productive-coding/387449)\n\n_**Video**_  \n[GopherCon USA (2025): Go’s Trace Tooling and Concurrency](https://www.youtube.com/watch?v=Gqo0oCfZSjg\u0026list=PL2ntRZ1ySWBeBA1lEnmD3vUedkRDvgnmw\u0026index=5)  \n[GopherCon UK (2025) - Building a coding agent from scratch](https://www.youtube.com/watch?v=ybBVOa572Tw\u0026list=PLDWZ5uzn69ewrYyHTNrXlrWVDjLiOX0Yb\u0026index=21)  \n[GopherCon UK (2025) - K8s CPU Limits Deconstructed - Bill Kennedy](https://www.youtube.com/watch?v=jECXV2BdsI8\u0026list=PLDWZ5uzn69ewrYyHTNrXlrWVDjLiOX0Yb\u0026index=13)  \n[Golang Charlotte (2024) - Domain Driven, Data Oriented Architecture](https://www.youtube.com/watch?v=bQgNYK1Z5ho)  \n[GopherCon SG (2023) - K8s CPU Limits and Go](https://www.youtube.com/watch?v=Dm7yuoYTx54\u0026list=PLq2Nv-Sh8Eba2gEaId35K2aAUFdpbKx9D\u0026index=6)  \n[P99 Talk (2022) - Evaluating Performance In Go](https://www.youtube.com/watch?v=PYMs-urosXs)  \n[GopherCon Europe (2022) - Practical Memory Profiling](https://www.youtube.com/watch?v=6qAfkJGWsns)  \n[Dgrpah Day (2021) - Getting Started With Dgraph and GraphQL](https://www.youtube.com/watch?v=5L4PUbDqSEo)  \n[GDN Event #1 (2021) - GoBridge Needs Your Help](https://www.youtube.com/watch?v=Tst0oI97cvQ\u0026t=2s)  \n[Training Within The Go Community (2019)](https://www.youtube.com/watch?v=PSR1twjzzAM\u0026feature=youtu.be)  \n[GopherCon Australia (2019) - Modules](https://www.youtube.com/watch?v=MVxbVR_6Tac)  \n[Golab (2019) - You Want To Build a Web Service?](https://www.youtube.com/watch?v=IV0wrVb31Pg)  \n[GopherCon Singapore (2019) - Garbage Collection Semantics](https://www.youtube.com/watch?v=q4HoWwdZUHs)  \n[GopherCon India (2019) - Channel Semantics](https://www.youtube.com/watch?v=AHAf1Xfr_HE)  \n[GoWayFest Minsk (2018) - Profiling Web Apps](https://www.youtube.com/watch?v=-GBMFPegqgw)  \n[GopherCon Singapore (2018) - Optimizing For Correctness](https://engineers.sg/video/optimize-for-correctness-gopherconsg-2018--2610)  \n[GopherCon India (2018) - What is the Legacy You Are Leaving Behind](https://www.youtube.com/watch?v=j3zCUc06OXo\u0026t=0s\u0026index=11\u0026list=PLhJxE57Cki63cElK2kmt3_vi8j2eIHTqZ)  \n[Code::Dive (2017) - Optimizing For Correctness](https://www.youtube.com/watch?v=OTLjN8NQDyo)  \n[Code::Dive (2017) - Go: Concurrency Design](https://www.youtube.com/watch?v=OrctYMf4btA)  \n[dotGo (2017) - Behavior Of Channels](https://www.youtube.com/watch?v=zDCKZn4-dck)  \n[GopherCon Singapore (2017) - Escape Analysis](https://engineers.sg/video/escape-analysis-and-memory-profiling-gophercon-sg-2017--1746)  \n[Capital Go (2017) - Concurrency Design](https://www.youtube.com/watch?v=yGOOUCrrgrE\u0026index=10\u0026list=PLeGxIOPLk9EKdl-h_Y-sbLhLoP-ia7CJ5)  \n[GopherCon India (2017) - Package Oriented Design](https://www.youtube.com/watch?v=spKM5CyBwJA#t=0m56s)  \n[GopherCon India (2015) - Go In Action](https://www.youtube.com/watch?v=QkPw8-Pf0SM)  \n[GolangUK (2016) - Dependency Management](https://youtu.be/CdhucJShJU8)  \n[GothamGo (2015) - Error Handling in Go](https://vimeo.com/115782573)  \n[GopherCon (2014) - Building an analytics engine](https://www.youtube.com/watch?v=EfJRQ1lGkUk)\n\n[Golang Charlotte (2023) - Domain Driven, Data Oriented Architecture with Bill Kennedy](https://www.youtube.com/watch?v=bQgNYK1Z5ho)  \n[Prague Meetup (2021) - Go Module Engineering Decisions](https://youtu.be/m8lgcXv2lhI)  \n[Practical Understanding Of Scheduler Semantics (2021)](https://www.youtube.com/watch?v=p2Cjq3Dq2Q0)  \n[Go Generics Draft Proposal (2020)](https://www.youtube.com/watch?v=gIEPspmbMHM\u0026t=2069s)  \n[Hack Potsdam (2017) - Tech Talk with William Kennedy](https://www.youtube.com/watch?v=sBzJ-sjhgs8)  \n[Chicago Meetup (2016) - An Evening](https://vimeo.com/199832344)  \n[Vancouver Meetup (2016) - Go Talk \u0026 Ask Me Anything With William Kennedy](https://www.youtube.com/watch?v=7YcLIbG1ekM\u0026t=91s)  \n[Vancouver Meetup (2015) - Compiler Optimizations in Go](https://www.youtube.com/watch?v=AQipeq39Aek)  \n[Bangalore Meetup (2015) - OOP in Go](https://youtu.be/gRpUfjTwSOo)  \n[GoSF Meetup - The Nature of Constants in Go](https://www.youtube.com/watch?v=ZUCHMAoOgUQ)  \n[London Meetup - Mechanical Sympathy](https://skillsmatter.com/skillscasts/8353-london-go-usergroup)  \n[Vancouver Meetup - Decoupling From Change](https://www.youtube.com/watch?v=7YcLIbG1ekM\u0026feature=youtu.be)\n\n_**Podcasts**_  \n[Ardan Labs Podcast: On Going Series](https://ardanlabs.buzzsprout.com/)  \n[Mangtas Nation: A Golang Deep Dive with Bill Kennedy](https://anchor.fm/mangtasnation/episodes/A-Golang-Deep-Dive-with-Bill-Kennedy--S2-EP3-e1ij9c3)  \n[Coding with Holger: Go with Bill Kennedy](https://anchor.fm/coding-with-holger/episodes/Go-with-Bill-Kennedy-e1c9h2q)  \n[Craft of Code: From Programming to Teaching Code with Bill Kennedy](https://podcasts.apple.com/us/podcast/from-programming-to-teaching-code-with-bill-kennedy/id1537136353?i=1000545230339)  \n[GoTime: Design Philosophy](https://changelog.com/gotime/172)  \n[GoTime: Learning and Teaching Go](https://changelog.com/gotime/72)  \n[GoTime: Bill Kennedy on Mechanical Sympathy](https://changelog.com/gotime/6)  \n[GoTime: Discussing Imposter Syndrome](https://changelog.com/gotime/30)  \n[HelloTechPros: Your Tech Interviews are Scaring Away Brilliant People](http://hellotechpros.com/william-kennedy-people)  \n[HelloTechPros: The 4 Cornerstones of Writing Software](http://hellotechpros.com/bill-kennedy-productivity)\n\n## More About Go\n\nGo is an open source programming language that makes it easy to build simple, reliable, and efficient software. Although it borrows ideas from existing languages, it has a unique and simple nature that make Go programs different in character from programs written in other languages. It balances the capabilities of a low-level systems language with some high-level features you see in modern languages today. This creates a programming environment that allows you to be incredibly productive, performant and fully in control; in Go, you can write less code and do so much more.\n\nGo is the fusion of performance and productivity wrapped in a language that software developers can learn, use and understand. Go is not C, yet we have many of the benefits of C with the benefits of higher level programming languages.\n\n[The Ecosystem of the Go Programming Language](https://henvic.dev/posts/go/) - Henrique Vicente  \n[The Why of Go](https://www.infoq.com/presentations/go-concurrency-gc) - Carmen Andoh  \n[Go Ten Years and Climbing](https://commandcenter.blogspot.com/2017/09/go-ten-years-and-climbing.html) - Rob Pike  \n[The eigenvector of \"Why we moved from language X to language Y\"](https://erikbern.com/2017/03/15/the-eigenvector-of-why-we-moved-from-language-x-to-language-y.html) - Erik Bernhardsson  \n[Learn More](https://talks.golang.org/2012/splash.article) - Go Team  \n[Simplicity is Complicated](https://www.youtube.com/watch?v=rFejpH_tAHM) - Rob Pike  \n[Getting Started In Go](http://aarti.github.io/2016/08/13/getting-started-in-go) - Aarti Parikh\n\n## Minimal Qualified Student\n\nThe material has been designed to be taught in a classroom environment. The code is well commented but missing some of the contextual concepts and ideas that will be covered in class. Students with the following minimal background will get the most out of the class.\n\n- Studied CS in school or has a minimum of two years of experience programming full time professionally.\n- Familiar with structural and object oriented programming styles.\n- Has worked with arrays, lists, queues and stacks.\n- Understands processes, threads and synchronization at a high level.\n- Operating Systems\n  - Has worked with a command shell.\n  - Knows how to maneuver around the file system.\n  - Understands what environment variables are.\n\n## Important Reading\n\nPlease check out this page of [important reading](reading/README.md). You will find articles and videos around mechanical sympathy, data-oriented design, Go runtime and optimizations and articles about the history of computing.\n\n## Before You Come To Class\n\nThe following is a set of tasks that can be done prior to showing up for class. We will also do this in class if anyone has not completed it. However, the more attendees that complete this ahead of time the more time we have to cover additional training material.\n\n### Prep Work\n\n**Watch This**  \n[Prepare You Mind](https://www.youtube.com/watch?v=xzK0hYKHzC4)\n\n**Reading Material**  \nhttp://go.dev/  \nhttps://www.ardanlabs.com/blog/\n\n**Exercises**  \nhttps://tour.golang.org/welcome/1  \nhttps://gophercises.com/\n\n**Books**  \nhttps://www.manning.com/books/go-in-action  \nhttps://bitfieldconsulting.com/books/fundamentals\n\n### Joining the Go Slack Community\n\nWe use a slack channel to share links, code, and examples during the training. This is free. This is also the same slack community you will use after training to ask for help and interact with may Go experts around the world in the community.\n\n- Using the following link, fill out your name and email address: https://invite.slack.gobridge.org/\n- Check your email, and follow the link to the slack application.\n\n### Installing Go\n\n#### Local Installation\n\nhttps://www.ardanlabs.com/blog/2016/05/installing-go-and-your-workspace.html\n\n### Editors\n\n**Visual Studio Code**  \nhttps://code.visualstudio.com/Updates  \nhttps://github.com/microsoft/vscode-go\n\n**VIM**  \nhttp://www.vim.org/download.php  \nhttp://farazdagi.com/blog/2015/vim-as-golang-ide/\n\n**Goland**  \nhttps://www.jetbrains.com/go/\n\n### Installing the Training Material\n\nWhile many of the examples can be done using the online playground (http://play.golang.org), some may find it easier to complete them with their local editor. To do so, you will want to load the training material locally to your machine. From a command prompt, issue the following commands:\n\n```sh\nmkdir -p $(go env GOPATH)/src/github.com/ardanlabs \u0026\u0026 cd $_\ngit clone https://github.com/ardanlabs/gotraining.git\n```\n\n_NOTE:_ This assumes you have Git installed. If you don’t, you can find the installation instructions here: https://git-scm.com/\n\n## Twitter\n\nJessie Frazelle ([@frazelledazzell](https://twitter.com/frazelledazzell/status/711355859066990592))  \n_\"@goinggodotnet you were amazing!!! So enthusiastic!!! Thanks for doing this for everyone!\"_\n\nKelsey Hightower ([‏@kelseyhightower](https://twitter.com/kelseyhightower/status/673359937909592064))  \n_\"Day 1 of the [Ultimate] Go workshop was outstanding! Big shoutout to @intel, @golangbridge, and @goinggodotnet for bringing this to Portland.\"_\n\nKatrina Owen ([@kytrinyx](https://twitter.com/kytrinyx/status/673360428278222848))  \n_\"OH: \"You thought you knew Go...\" (You do Go? You want to do Go?) You should take this workshop. Seriously.) \"_\n\nIan Molee ([@ianfoo](https://twitter.com/ianfoo/status/752246569554964480))\n_\"If you're at @GopherCon, get yourself to a session with @goinggodotnet. Superb! Pretty sure his pic appears with the definition of \"dynamo.\"\"_\n\nMatt Oswalt ([@Mierdin](https://twitter.com/mierdin/status/673570058392616961))  \n_\"Should be mentioned that though I am no expert, I have been using Go for about a year - and this meetup is kicking my ass.\"_\n\n## Testimonials\n\nPaul Yeoh  \n\\_\"Today’s workshop was just mind blowing! You kept us all on the edge all day long - it was the most exhilarating all day workshop I have attended, period. The content was inspiring, moving - caused me to think deeply and gave me a lot of meat to chew on about what it is we are really doing as programmers, what an awesome day!\n\nAnd most of all, I just got such a kick out of the energy which you were putting out - larger than life, it felt like you were turned up to 200%. I really took a lot from it at many levels. Thank you!!\"\\_\n\nAna-Maria Lazar, Software Engineer at Sainsbury's  \n_\"Intensive crash course in Go that literally takes you to a whole new level. Not only Bill provides lots of examples and exercises to familiarize yourself faster with the language but there is also a lot of information that can be applied to other languages as well. Perfect combination!\"_\n\nSusan Dady, Software Engineer - GE Digital  \n_\"Rarely will you come across a course as worthwhile as this one. I learned many things relevant and useful in my daily work and William's energy kept me engaged. I came back to work excited to get coding in Go.\"_\n\nRichard Stanley, Software Engineer - GE Digital  \n_\"Not only does Bill deeply understands the technical details of Go, he also can explain them in an effective, enthusiastic manner that helped me retain somewhat dry material. His passion for the language and its capabilities are obvious through out his training.\"_\n\nShalab Goel, Ph.D.  \n_\"It was a pleasure taking this course — learning lot of \"dry\" stuff in such animated and enthusiastic environment. The exercises were spot on for building what you called as \"memory muscle. I have good amount of background in conventional multithreaded and distributed environments, but I have not put that knowledge to use more recently; so it was good refresher from that point of view as well. From Yuck to completely Wow-ed is how I will like to describe my respect for Go within three days. I knew nothing about GO before the course.\"_\n\nGeoff Clitheroe ([@gclitheroe](https://twitter.com/gclitheroe))  \n_\"Your training is awesome! Myself and three colleagues recently caught variations of the training at GopherCon and OSCON. We all thought the Bootcamp was the best thing at any of these conferences (and I went to both). Awesome work to Bill for presenting and anyone involved in developing the training. I really liked the structure, emphasis on deeper understanding, me doing a small number of examples to emphasize this, and general content. Night and day to other training which is to often just watching someone else live code. Great work.\"_\n\nACL Services ([@ACLServices](https://twitter.com/ACLServices))  \n_\"I'd just like to thank you again for just a phenomenal training session. The feedback from everyone was overwhelmingly positive. You probably could tell first hand that there were skeptics at first, but you've turned many into golang converts and we are really excited in growing golang adoption internally.\"_\n\nJoshua Shuster ([@naysaier](https://twitter.com/naysaier))  \n_\"I would consider Ardan Studio's 3 day course to be invaluable. Bill and his staff, being some of the foremost authorities in the Go language, were able to make many of the complex go topics understandable. Covering everything from memory management, all the way up to building concurrency programs and web API's. It has given me the knowledge to write idiomatic Go, and make the best use of its features. I would highly their courses to anyone new to Go, or to anyone wanting to widen their existing knowledge.\"_\n\nNeeru Dwivedi  \n_\"I attended the one day workshop by Bill Kennedy from Ardan Labs. I was in for a surprise as before the workshop I was concerned whether I would understand concepts and whether I would be able to follow along. Bill has this wonderful way of explaining concepts and his knowledge on the concepts is so good that, I didn't feel that I was learning something new \u0026 complicated. The Go Workshop got me started on the Go language. This workshop is perfect for beginners and anyone who wants to learn more about Go. I highly recommend this.\"_\n\nTodd Rafferty ([@webrat](https://twitter.com/webrat))  \n_\"I highly recommend William Kennedy / Ardan Lab for Go Training. William is extremely passionate about the Go language and his energy feeds into his training. Very professional, very informative. My favorite section of his training, if I had to pick, was the segment on MultiWriters. I highly recommend a 3 day course, over a 2 day course. Even after the classes were over, William was always responsive with additional questions via various social media channels.\"_\n\nGeorgi Knox ([@GeorgiCodes](https://twitter.com/georgicodes))  \n_\"The Intro to Go Workshop enabled me to come into class with very little knowledge of Go and leave having a firm grasp of the key concepts of the language. Each topic was followed up with hands-on coding problems which helped to solidify what I was learning. My teacher Bill was not only approachable, but very excited about the language and his enthusiasm was contagious. I enjoyed that we talked about some of the lower level implementation details of Go which was something that I had found lacking from some books on the language. Overall I would highly recommend this workshop to anyone looking to learn Go quickly and effectively.\"_\n\n---\n\nAll material is licensed under the [Apache License Version 2.0, January 2004](http://www.apache.org/licenses/LICENSE-2.0).\n","funding_links":[],"categories":["Go","Golang","文章","Article","Uncategorized","🌏 Frameworks"],"sub_categories":["Non Video Golang courses","组织","To Organize","Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fardanlabs%2Fgotraining","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fardanlabs%2Fgotraining","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fardanlabs%2Fgotraining/lists"}