Go Fundamentals

Go Fundamentals

Go is a modern programming language with a heavy focus on developer productivity, scalability, and speed. Whether you're a recent grad or an industry veteran, there's no better time to learn the core concepts of the Go programming language. This course introduces language fundamentals, such as primitives, language structure, design, and concurrency. If you have little or no experience with Go and want to jumpstart your knowledge, this course is for you.

This course is for you because...

You want to review the Go language to see if it's something that will work for you and your team’s next project.
You currently develop in another language and are interested in learning how Go handles similar constructs and how it's different.
Prerequisites

A working knowledge of a modern programming language (Java, Ruby, Python, C, C++, C#, Perl, etc.)
A basic understanding of operating system concepts and environment variables
Experience working with a command shell and navigating a filesystem

Buy $79.99 Share
Go Fundamentals

16 Videos

  • Syntax And Types

    In this chapter we will cover the basic keywords and syntax of the Go language. You'll learn the keywords, operators, and delimiters that make up the language. You'll then move into Syntax and Types. Learn how strings are handled as well as UTF-8 text.

    You'll also learn about variables, consta...

  • Arrays & Iteration

    Arrays in Go are useful when planning for detailed layout of memory. Using arrays can sometimes help avoid allocation. However, their primary use is for the building blocks of slices.

    This chapter will cover the basics of creating, initializing, and indexing an array. It will also cover basic ...

  • Slices

    Slices wrap arrays in Go, and provide a more general, powerful, and convenient interface to data sequences. In this chapter, you will cover slice basics such as creating, initializing, and iteration. You will also learn how to grow a slice, work with subsets of slices, and slice tricks.

  • Maps

    Maps are a powerful built-in data structure that associates keys and values. In this module you will cover basic map creation, initialization, and iteration. You will discover how to determine if values exist in maps and how to update and delete map values.

  • Pointers

    A pointer is a type that holds the address that points to a variables value. In many languages, pointers are the source of pain and confusion. Go has made it easy to use and understand pointers. In this module you will learn about the difference between pass by value and pass by reference. You wi...

  • Functions

    Functions in Go are a primitive type. This chapter will cover how to declare and call functions. You will cover how to send zero or many arguments, as well as receive zero or many arguments. Variadic arguments, defers, and panics will also be covered.

  • Interfaces

    Interfaces in Go provide a way to specify the behavior of an object: if something can do this, then it can be used here. This module will take a look at how to use interfaces to abstract that behavior. Concepts such as the Empty Interface, satisfying multiple interfaces, and asserting for behavio...

  • Errors

    Error handling in Go can feel a bit tedious at first. However, this module will cover the benefits of how Go's error model results in more reliable code. This module will cover how to handle basic errors, return errors as an interface that satisfies the error type. Concepts such as custom error t...

  • Concurrency

    Concurrent programming in many environments is made difficult by the subtleties required to implement correct access to shared variables. Go encourages a different approach in which shared values are passed around on channels and, in fact, never actively shared by separate threads of execution.
    ...

  • Concurrency: Sync Package

    Concurrent programming in many environments is made difficult by the subtleties required to implement correct access to shared variables. Go encourages a different approach in which shared values are passed around on channels and, in fact, never actively shared by separate threads of execution.
    ...

  • Concurrency With Channels

    This chapter covers Go routines and how to synchronize communication between them. Channels are explored along with the corresponding patterns for each. Find out the difference between a buffered and unbuffered channel, and when to use them. Also discover how to use channels for signaling for con...

  • Testing

    Go ships with a powerful testing framework. Tests in Go are written in the Go language, so there is no need to learn another syntax. This module will explore basic tests, table driven tests, and sub-tests. Concepts such as race conditions, code coverage, test automation. Understanding test option...

  • Embedding & Composition

    Go does not provide the typical, type-driven notion of subclassing, but it does have the ability to “borrow” pieces of an implementation by embedding types within a struct or interface. This module will cover how promotion from embedding works as well how collision and overriding are handled. You...

  • Context

    Package context defines the Context type, which carries deadlines, cancelation signals, and other request-scoped values across API boundaries and between processes. Context is used for controlling concurrent subsystems in your application. This module will cover the different kinds of behavior wi...

  • Tooling

    Go ships with a strong suite of built in tools. This module will go over the most common tools and how to use them in your daily development workflow. In addition to the tools that ship with Go there are a set of very important linters and vetters that can catch runtime bugs as well as significan...

  • Building & Compiling Applications

    Go has the ability to build and cross compile with ease. This chapter will cover the different ways to build your binary and additionally covers concepts for embedding build information such as version and GitHub SHA-1 hash. See how build tags are used to conditionally include specific branches o...