Git Product home page Git Product logo

gotour's Introduction

Go Tour

Copyright 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Ardan Labs
[email protected]

Learn More

Reach out about corporate training events, open enrollment live training sessions, and on-demand learning options.

Ardan Labs (www.ardanlabs.com)
[email protected]

To attend any of our high-performance tranings check out this link:
https://www.ardanlabs.com/training

Index

Purchase Video / Book

The 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.

education.ardanlabs.com

There is a book for all of the material in the class.

Ultimate Go Notebook

Our Experience

We 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.

Our 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.

Our Teachers

William Kennedy (@goinggodotnet)

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.

Video Training
Ultimate Go Video
Ardan Labs YouTube Channel

Blog
Going Go

Writing
Running MongoDB Queries Concurrently With Go
Go In Action

Articles
IT World Canada

Video
P99 Talk (2022) - Evaluating Performance In Go
GopherCon Europe (2022) - Practical Memory Profiling
Dgrpah Day (2021) - Getting Started With Dgraph and GraphQL
GDN Event #1 (2021) - GoBridge Needs Your Help
Training Within The Go Community (2019)
GopherCon Australia (2019) - Modules
Golab (2019) - You Want To Build a Web Service?
GopherCon Singapore (2019) - Garbage Collection Semantics
GopherCon India (2019) - Channel Semantics
GoWayFest Minsk (2018) - Profiling Web Apps
GopherCon Singapore (2018) - Optimizing For Correctness
GopherCon India (2018) - What is the Legacy You Are Leaving Behind
Code::Dive (2017) - Optimizing For Correctness
Code::Dive (2017) - Go: Concurrency Design
dotGo (2017) - Behavior Of Channels
GopherCon Singapore (2017) - Escape Analysis
Capital Go (2017) - Concurrency Design
GopherCon India (2017) - Package Oriented Design
GopherCon India (2015) - Go In Action
GolangUK (2016) - Dependency Management
GothamGo (2015) - Error Handling in Go
GopherCon (2014) - Building an analytics engine

Prague Meetup (2021) - Go Module Engineering Decisions
Practical Understanding Of Scheduler Semantics (2021)
Go Generics Draft Proposal (2020)
Hack Potsdam (2017) - Tech Talk with William Kennedy
Chicago Meetup (2016) - An Evening
Vancouver Meetup (2016) - Go Talk & Ask Me Anything With William Kennedy
Vancouver Meetup (2015) - Compiler Optimizations in Go
Bangalore Meetup (2015) - OOP in Go
GoSF Meetup - The Nature of Constants in Go
London Meetup - Mechanical Sympathy
Vancouver Meetup - Decoupling From Change

Podcasts
Ardan Labs Podcast: On Going Series
Mangtas Nation: A Golang Deep Dive with Bill Kennedy
Coding with Holger: Go with Bill Kennedy
Craft of Code: From Programming to Teaching Code with Bill Kennedy
GoTime: Design Philosophy
GoTime: Learning and Teaching Go
GoTime: Bill Kennedy on Mechanical Sympathy
GoTime: Discussing Imposter Syndrome
HelloTechPros: Your Tech Interviews are Scaring Away Brilliant People
HelloTechPros: The 4 Cornerstones of Writing Software

More About Go

Go 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.

Go 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.

The Ecosystem of the Go Programming Language - Henrique Vicente
The Why of Go - Carmen Andoh
Go Ten Years and Climbing - Rob Pike
The eigenvector of "Why we moved from language X to language Y" - Erik Bernhardsson
Learn More - Go Team
Simplicity is Complicated - Rob Pike
Getting Started In Go - Aarti Parikh

Minimal Qualified Student

The 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.

  • Studied CS in school or has a minimum of two years of experience programming full time professionally.
  • Familiar with structural and object oriented programming styles.
  • Has worked with arrays, lists, queues and stacks.
  • Understands processes, threads and synchronization at a high level.
  • Operating Systems
    • Has worked with a command shell.
    • Knows how to maneuver around the file system.
    • Understands what environment variables are.

Important Reading

Please check out this page of important reading. You will find articles and videos around mechanical sympathy, data-oriented design, Go runtime and optimizations and articles about the history of computing.

Joining the Go Slack Community

We 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.


All material is licensed under the Apache License Version 2.0, January 2004.

gotour's People

Contributors

alexandear avatar alexbozhenko avatar alexshd avatar ardan-bkennedy avatar ardan-erick avatar cesarfuhr avatar cheikhseck-ardan avatar desmax74 avatar dlsniper avatar egonzo avatar fiiii avatar goestoeleven avatar gustavocd avatar hrvadl avatar ja7ad avatar leandrorichardardan avatar skibish avatar tebeka avatar tty2 avatar webrat avatar wendelhime avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gotour's Issues

Spanish translation

Hi all 👋 I'd like to see this fantastic tour and course to the Spanish language, and I'd be interested in contributing the translation as a whole.

I have a local branch that could serve as seed for this, and I wonder if it would be of interest to start pushing it as a PR, and review it in small chunks, given there is a lot of content.

What would it be the preferred way of doing this?

Thanks in advance!

tour: Functions section little mistake

Functions can return zero or one value (or none, in which case you can omit the
return type). The `return` statement is used to specify the value to be returned.
In the example above, `add` returns an integer.

I think this should be:
"Functions can return one or more values (or none, in which case you can omit the
return type)..."

Should we translate code comments?

I would like to start a discussion about whether we also change comments in code. My first instinct was to say no. For sure I don't want to touch the actual code.

Spanish Translation

Hey folks, I hope you're all doing well.
I'm interested in providing the translations for the site to Spanish.
Although I'm not very familiar with the tools being used for the site in question (https://tour.ardanlabs.com).

Would you please provide some guidance to get started on this 🙏🏽 ?
Thanks in advance

Please create a template/standar for PR reviewing.

I think we should agree on a form of PRs for translations. If you look at the current PR list it is very hard to see wherever it is a translation PR and for what language, and I have to see one by one to check if I can either review or contribute..

I am thinking of:

[Translation] [<Language>] : <What are you translating?>

Example:

[Translation] [Spanish]: Binary search article.

image

In Arrays

Declaring and Initializing Values

it is written "This means that each string has the first word set to nil and the second word set to 0."
But, this shouldn't be "This means that each string has the first word set to nil and the second word set to an empty string ("")." ?

Translation into Russian

I would be up to translating these materials into Russian if you guys are interested.

Let me know
Nicolai

Link to relevant video parts?

For those who purchased the course, it would be nice to have not just a generic link to "ultimate go bundle", but to the actual video.

E.g. this

- [[https://www.ardanlabs.com/training/individual-on-demand/ultimate-go-bundle/][Watch The Video]]

would point to:
https://courses.ardanlabs.com/courses/take/ultimate-go/lessons/7419302-2-4-constants
I guess?

Not sure how much work is it to maintain the links though.
But maybe more people will buy the course if they see a link to a relevant video?
Maybe you can also include a short preview for each relevant video, to make people more excited :)

French Translation

Hello,

would you be interested in a french translation of the Go Tour ?

As I'll start going through for a refresher, I could translate as I go along.

Regards.

tour: example2.go -- methods returns only integer part of hours

Context: https://tour.ardanlabs.com/tour/eng/methods/1

In example2.go, the methods setHours and hours, as they are, ignores any fractional part of hours.

I think they should be as follows:

// setHours sets the specified number of hours.
func (d *duration) setHours(h float64) {
	*d = duration(h*float64(hour))
}

// hours returns the duration as a floating point number of hours.
func (d duration) hours() float64 {
	hours := d / hour
	nsec := d % hour
	return float64(hours) + float64(nsec)*(1e-9/60/60)
}

Thank you for a wonderful resource.

Error while installing 'github.com/ardanlabs/gotour/cmd/tour'

Issue

I encountered an issue while trying to install the github.com/ardanlabs/gotour/cmd/tour package using Go version go1.21.1. Below is the error message I received:

# runtime/internal/sys
/usr/local/go/src/runtime/internal/sys/intrinsics_common.go:9:7: len8tab redeclared in this block
	/usr/local/go/src/runtime/internal/sys/intrinsics.go:76:7: other declaration of len8tab
/usr/local/go/src/runtime/internal/sys/intrinsics_common.go:32:6: Len64 redeclared in this block
	/usr/local/go/src/runtime/internal/sys/intrinsics.go:99:6: other declaration of Len64
/usr/local/go/src/runtime/internal/sys/intrinsics_common.go:50:7: m0 redeclared in this block
	/usr/local/go/src/runtime/internal/sys/intrinsics.go:117:7: other declaration of m0
/usr/local/go/src/runtime/internal/sys/intrinsics_common.go:51:7: m1 redeclared in this block
	/usr/local/go/src/runtime/internal/sys/intrinsics.go:118:7: other declaration of m1
/usr/local/go/src/runtime/internal/sys/intrinsics_common.go:52:7: m2 redeclared in this block
	/usr/local/go/src/runtime/internal/sys/intrinsics.go:119:7: other declaration of m2
/usr/local/go/src/runtime/internal/sys/intrinsics_common.go:55:6: OnesCount64 redeclared in this block
	/usr/local/go/src/runtime/internal/sys/intrinsics.go:122:6: other declaration of OnesCount64
/usr/local/go/src/runtime/internal/sys/intrinsics_common.go:86:6: LeadingZeros64 redeclared in this block
	/usr/local/go/src/runtime/internal/sys/intrinsics.go:153:6: other declaration of LeadingZeros64
/usr/local/go/src/runtime/internal/sys/intrinsics_common.go:89:6: LeadingZeros8 redeclared in this block
	/usr/local/go/src/runtime/internal/sys/intrinsics.go:156:6: other declaration of LeadingZeros8
/usr/local/go/src/runtime/internal/sys/intrinsics_common.go:92:6: Len8 redeclared in this block
	/usr/local/go/src/runtime/internal/sys/intrinsics.go:159:6: other declaration of Len8
/usr/local/go/src/runtime/internal/sys/intrinsics_common.go:101:6: Prefetch redeclared in this block
	/usr/local/go/src/runtime/internal/sys/intrinsics.go:200:6: other declaration of Prefetch
/usr/local/go/src/runtime/internal/sys/intrinsics_common.go:101:6: too many errors

Environment

  • Go version: go1.21.1
  • Operating System: Linux (amd64)

Steps to Reproduce

  1. Run the following command: go install github.com/ardanlabs/gotour/cmd/tour@latest

Expected Behavior

I expected the github.com/ardanlabs/gotour/cmd/tour package to be installed without any errors.

Actual Behavior

The installation process failed with the error mentioned above.

Additional Information

Please let me know if you need any additional information to diagnose and fix this issue.

Thank you!

tour: Misspell in the first variables lesson

Context: https://tour.ardanlabs.com/tour/rus/variables/1

I think it's necessary to replace "(unit...)" to "(uint...)"

"Когда вы объявляете тип данных без указания точности (unit, int), размер выделяемой памяти зависит от архитектуры компьютера на котором происходит сборка программы:"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.