Ultimate Go Programming, Second Edition

Video description

16+ Hours of Video Instruction

Ultimate Go Programming LiveLessons, Second Edition, 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

Learn How To

  • Read code with an understanding of the language mechanics and internals
  • Understand costs by knowing the different semantics of the language
  • Code and design software more effectively
  • Design your Go projects and better ways to package your APIs
  • Write multithreaded code in Go and learn the things you need to focus on
  • Unit test your code and write benchmarks to validate assumptions
  • Profile and trace your Go programs to identify and fix bugs and to make improvements


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, Networking, Security, and more. Learn more about Pearson Video training at http://www.informit.com/video. Video Lessons are available for download for offline viewing within the streaming format. Look for the green arrow in each lesson.

Table of contents

  1. Introduction
    1. Ultimate Go Programming: Introduction
  2. Lesson 1: Design Guidelines
    1. Topics
    2. 1.1 Prepare Your Mind
    3. 1.2 Productivity versus Performance
    4. 1.3 Correctness versus Performance
    5. 1.4 Code Reviews
  3. Lesson 2: Language Syntax
    1. Topics
    2. 2.1 Variables
    3. 2.2 Struct Types
    4. 2.3 Pointers—Part 1 (Pass by Value)
    5. 2.3 Pointer—Part 2 (Sharing Data)
    6. 2.3 Pointers—Part 3 (Escape Analysis)
    7. 2.3 Pointers—Part 4 (Stack Growth)
    8. 2.3 Pointers—Part 5 (Garbage Collection)
    9. 2.4 Constants
  4. Lesson 3: Data Structures
    1. Topics
    2. 3.1 Data-Oriented Design
    3. 3.2 Arrays—Part 1 (Mechanical Sympathy)
    4. 3.2 Arrays—Part 2 (Semantics)
    5. 3.3 Slices—Part 1 (Declare and Length and Reference Types)
    6. 3.3 Slices—Part 2 (Appending Slices)
    7. 3.3 Slices—Part 3 (Taking Slices of Slices)
    8. 3.3 Slices—Part 4 (Slices and References)
    9. 3.3 Slices—Part 5 (Strings and Slices)
    10. 3.3 Slices—Part 6 (Range Mechanics)
    11. 3.4 Maps
  5. Lesson 4: Decoupling
    1. Topics
    2. 4.1 Methods—Part 1 (Declare Receiver Behavior)
    3. 4.1 Methods—Part 2 (Value Pointer Semantics)
    4. 4.1 Methods—Part 3 (Function/ Method Variables)
    5. 4.2 Interfaces—Part 1 (Polymorphism)
    6. 4.2 Interfaces—Part 2 (Method Sets and Address of Value)
    7. 4.2 Interfaces—Part 3 (Storage by Value)
    8. 4.3 Embedding
    9. 4.4 Exporting
  6. Lesson 5: Composition
    1. Topics
    2. 5.1 Grouping Types
    3. 5.2 Decoupling—Part 1
    4. 5.2 Decoupling—Part 2
    5. 5.2 Decoupling—Part 3
    6. 5.3 Conversion and Assertions
    7. 5.4 Interface Pollution
    8. 5.5 Mocking
    9. 5.6 Design Guidelines
  7. Lesson 6: Error Handling
    1. Topics
    2. 6.1 Default Error Values
    3. 6.2 Error Variables
    4. 6.3 Type as Context
    5. 6.4 Behavior as Context
    6. 6.5 Find the Bug
    7. 6.6 Wrapping Errors
  8. Lesson 7: Packaging
    1. Topics
    2. 7.1 Language Mechanics
    3. 7.2 Design Guidelines
    4. 7.3 Package-Oriented Design
  9. Lesson 8: Goroutines
    1. Topics
    2. 8.1 OS Scheduler Mechanics
    3. 8.2 Go Scheduler Mechanics
    4. 8.3 Creating Goroutines
  10. Lesson 9: Data Races
    1. Topics
    2. 9.1 Cache Coherency and False Sharing
    3. 9.2 Synchronization with Atomic Functions
    4. 9.3 Synchronization with Mutexes
    5. 9.4 Race Detection
    6. 9.5 Map Data Race
    7. 9.6 Interface-Based Race Condition
  11. Lesson 10: Channels
    1. Topics
    2. 10.1 Signaling Semantics
    3. 10.2 Basic Patterns—Part 1 (Wait for Task)
    4. 10.2 Basic Patterns—Part 2 (Wait for Result)
    5. 10.2 Basic Patterns—Part 3 (Wait for Finished)
    6. 10.3 Pooling Pattern
    7. 10.4 Fan Out Pattern—Part 1
    8. 10.4 Fan Out Pattern—Part 2
    9. 10.5 Drop Pattern
    10. 10.6 Cancellation Pattern
  12. Lesson 11: Concurrency Patterns
    1. Topics
    2. 11.1 Context—Part 1
    3. 11.1 Context—Part 2
    4. 11.2 Failure Detection
  13. Lesson 12: Testing
    1. Topics
    2. 12.1 Basic Unit Testing
    3. 12.2 Table Unit Testing
    4. 12.3 Mocking Web Server Response
    5. 12.4 Testing Internal Endpoints
    6. 12.5 Example Tests
    7. 12.6 Sub Tests
    8. 12.7 Code Coverage
  14. Lesson 13: Benchmarking
    1. Topics
    2. 13.1 Basic Benchmarking
    3. 13.2 Sub Benchmarks
    4. 13.3 Validate Benchmarks
  15. Lesson 14: Profiling and Tracing
    1. Topics
    2. 14.1 Profiling Guidelines
    3. 14.2 Stack Traces
    4. 14.3 Micro Level Optimization
    5. 14.4 Part 1: Macro Level Optimization: GODEBUG Tracing
    6. 14.4 Part 2: Macro Level Optimization: Memory Profiing
    7. 14.4 Part 3: Macro Level Optimization: Tooling Changes
    8. 14.4 Part 4: Macro Level Optimization: CPU Profiling
    9. 14.5 Execution Tracing
  16. Summary
    1. Ultimate Go Programming: Summary

Product information

  • Title: Ultimate Go Programming, Second Edition
  • Author(s): William Kennedy
  • Release date: September 2018
  • Publisher(s): Pearson
  • ISBN: 0135261651