O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Ultimate Go Programming

Video Description

15+ Hours of Video Instruction

Ultimate Go Programming LiveLessons provides an intensive, comprehensive, and idiomatic view of the Go programming language. This course focuses on both the specification and implementation of the language, including topics ranging from language syntax, design, and guidelines to concurrency, testing, and profiling. This class is perfect for anyone who wants a jump-start in learning Go or wants a more thorough understanding of the language and its internals.


In this video training, Bill Kennedy starts by providing a deep and intensive dive into Go's language syntax, idioms, implementation, and specification. Then Bill guides you through the essential things you need to know about designing software in Go. With that strong foundation, Bill then teaches the language mechanics behind Go's concurrency primitives and covers all the things you need to know to design concurrent software. Finally, Bill covers the tooling Go provides for testing, tracing, and profiling your programs.

About the Instructor

William Kennedy is a managing partner at Ardan Studio in Miami, Florida, a mobile, web, and systems development company. He is also a coauthor 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 embracing diversity.

Skill Level

  • Intermediate

What You Will Learn

  • Language mechanics and internals
  • Data structures and mechanical sympathy
  • Software design and best practices
  • Project structure and design
  • Concurrent software design
  • Testing and benchmarking
  • Tracing and profiling

Who Should Take This Course

Any intermediate-level developer who has some experience with other programming languages and wants to learn Go. This video is perfect for anyone who wants a jump-start in learning Go or wants a more thorough understanding of the language, its internals and how to design software.

Course Requirements

  • 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

About Pearson Video Training

Pearson publishes expert-led video tutorials covering a wide selection of technology topics designed to teach you the skills you need to succeed. These professional and personal technology videos feature world-leading author instructors published by your trusted technology brands: Addison-Wesley, Cisco Press, Pearson IT Certification, Prentice Hall, Sams, and Que. Topics include: IT Certification, Programming, Web Development, Mobile Development, Home and Office Technologies, Business and Management, and more. Learn more about Pearson Video Training at http:// www.informit.com/video.

Table of Contents

  1. Introduction
    1. Ultimate Go Programming: Introduction 00:02:57
  2. Lesson 1: Design Guidelines
    1. 1.0 Topics 00:00:38
    2. 1.1 Prepare Your Mind 00:06:20
    3. 1.2 Productivity versus Performance 00:06:49
    4. 1.3 Correctness versus Performance 00:02:53
    5. 1.4 Code Reviews 00:13:54
  3. Lesson 2: Language Syntax
    1. 2.0 Topics 00:00:37
    2. 2.1 Variables 00:16:35
    3. 2.2 Struct Types 00:17:18
    4. 2.3.1 Pointers, Part 1 00:12:51
    5. 2.3.2 Pointers, Part 2 00:07:53
    6. 2.3.3 Pointers, Part 3 00:10:40
    7. 2.3.4 Pointers, Part 4 00:10:18
    8. 2.3.5 Pointers, Part 5 00:11:04
    9. 2.4 Constants 00:07:58
    10. 2.5 Functions 00:17:03
  4. Lesson 3: Data Structures
    1. 3.0 Topics 00:00:39
    2. 3.1 Data-Oriented Design 00:28:49
    3. 3.2 Arrays 00:13:38
    4. 3.3.1 Slices, Part 1 00:12:45
    5. 3.3.2 Slices, Part 2 00:20:07
    6. 3.3.3 Slices, Part 3 00:15:43
    7. 3.4 Maps 00:06:28
  5. Lesson 4: Decoupling
    1. 4.0 Topics 00:00:40
    2. 4.1.1 Methods, Part 1 00:19:06
    3. 4.1.2 Methods, Part 2 00:11:09
    4. 4.2.1 Interfaces, Part 1 00:14:40
    5. 4.2.2 Interfaces, Part 2 00:18:36
    6. 4.3 Embedding 00:08:43
    7. 4.4 Exporting 00:10:51
  6. Lesson 5: Composition
    1. 5.0 Topics 00:00:45
    2. 5.1 Grouping Types 00:11:29
    3. 5.2.1 Decoupling, Part 1 00:20:17
    4. 5.2.2 Decoupling, Part 2 00:14:27
    5. 5.3 Conversion and Assertions 00:10:24
    6. 5.4 Interface Pollution 00:08:17
    7. 5.5 Mocking 00:07:02
    8. 5.6 Design Guidelines 00:06:34
  7. Lesson 6: Error Handling
    1. 6.0 Topics 00:00:30
    2. 6.1 Default Error Values 00:08:01
    3. 6.2 Error Variables 00:03:09
    4. 6.3 Type as Context 00:07:23
    5. 6.4 Behavior as Context 00:06:23
    6. 6.5 Find the Bug 00:04:18
    7. 6.6 Wrapping Errors 00:11:25
  8. Lesson 7: Packaging
    1. 7.0 Topics 00:00:41
    2. 7.1 Language Mechanics 00:03:15
    3. 7.2 Design Guidelines 00:13:29
    4. 7.3 Package-Oriented Design 00:16:41
  9. Lesson 8: Goroutines
    1. 8.0 Topics 00:00:36
    2. 8.1 Go Scheduler Internals 00:25:15
    3. 8.2 Language Mechanics 00:17:48
    4. 8.3 Less Is More 00:07:34
  10. Lesson 9: Data Races
    1. 9.0 Topics 00:00:45
    2. 9.1 Race Detection 00:12:01
    3. 9.2 Atomic Functions 00:05:57
    4. 9.3 Mutexes 00:12:32
  11. Lesson 10: Channels
    1. 10.0 Topics 00:00:42
    2. 10.1.1 Language Mechanics, Part 1 00:20:30
    3. 10.1.2 Language Mechanics, Part 2 00:21:19
    4. 10.2 Unbuffer Examples 00:12:44
    5. 10.3 Buffer Example 00:06:43
    6. 10.4 Select Example 00:16:52
    7. 10.5 Channel Design Guidelines 00:09:04
    8. 10.6 Concurrent Software Design 00:06:30
  12. Lesson 11: Concurrency Patterns
    1. 11.0 Topics 00:00:33
    2. 11.1 Context 00:24:09
    3. 11.2 Task 00:11:45
    4. 11.3 Logger 00:14:00
  13. Lesson 12: Testing
    1. 12.0 Topics 00:00:26
    2. 12.1 Basic Testing 00:10:25
    3. 12.2 Web Testing 00:11:24
    4. 12.3 Example Tests 00:07:48
    5. 12.4 Sub Tests 00:04:35
    6. 12.5 Test Coverage 00:03:08
    7. 12.6 Benchmarking 00:07:14
    8. 12.7 Fuzzing 00:17:24
  14. Lesson 13: Profiling
    1. 13.0 Topics 00:00:43
    2. 13.1 Stack Traces 00:05:45
    3. 13.2 Profiling Guidelines 00:12:36
    4. 13.3 Memory Tracing 00:10:11
    5. 13.4 Scheduler Tracing 00:11:04
    6. 13.5 Memory and CPU Profiling 00:28:44
    7. 13.6 pprof Profiling 00:10:28
    8. 13.7 Blocking Profiling 00:13:09
    9. 13.8 Real World Example 00:24:13
  15. Summary
    1. Ultimate Go Programming: Summary 00:01:54