Go is a programming language created by Google, and this course is the most intuitive, in-depth, and highest-quality Go course on Udemy, with an insane level of attention to detail. You'll understand both the why and how. We've included thousands of animations, exercises, quizzes, examples, challenges, projects, and so on. By the end of the course, you'll become a confident Go programmer from scratch.
Why should you take this course now?
Go is a programming language created by Google, and this course is the most intuitive, in-depth, and highest-quality Go course on Udemy, with an insane level of attention to detail. You'll understand both the why and how. We've included thousands of animations, exercises, quizzes, examples, challenges, projects, and so on. By the end of the course, you'll become a confident Go programmer from scratch.
Why should you take this course now?
Watch ultra-detailed, entertaining, intuitive, and easy to understand illustrations and animations.
Solve 1000+ hands-on exercises (solutions are also included).
Create projects including a log parser, file scanner, spam masker, and more.
Learn Go programming tips and tricks that you can't find easily anywhere else.
Learn the Go internals and common Go idioms and best-practices.
Why should you learn Go (aka Golang and Go lang)?
Go is one of the most desired, easy to learn, and the highest paying programming languages. There are 1+ million Go programmers around the world, and the number is increasing each day exponentially. It's been used by Google, Facebook, Twitter, Uber, Docker, Kubernetes, Heroku, and many others.
Go is Efficient like C, C++, and Java, and Easy to use like Python and Javascript. It's Open-Source, Simple, Powerful, Efficient, Cross-Platform (OS X, Windows, Linux, ...), Compiled, Garbage-Collected, and Concurrent.
Go is best for Command-line Tools, Web APIs, Distributed Network Applications like Microservices, Database Engines, Big-Data Processing Pipelines, and so on.
What are you going to learn from this course (briefly)?
Go OOP: Interfaces and Methods
Internals of Methods and Interfaces
Functions and Pointers: Program design, pass by value, and addressability.
Implicit interface satisfaction
Type assertion and Type Switch
Empty interface: []interface{} vs interface{}
Value, Pointer, and Nil Receivers
Promoted Methods
Famous Interfaces
Tips about when to use interfaces
fmt.Stringer, sort.Sort, json.Marshaler, json.Unmarshaler, and so on.
Composite Types: Arrays, Slices, Maps, and Structs
Internals of Slices and Maps
Backing array, slice header, capacity, and map header
JSON encoding and decoding, field tags, embedding
Make, copy, full Slice expressions and append mechanics
UTF-8 encoding and decoding
Go Type System Mechanics
Type inference, underlying, predeclared, and unnamed types.
Untyped constants and iota.
Blank Identifier, short declaration, redeclaration, scopes, naming conventions
I/O
Process Command-Line Arguments, printf, working with files, bufio.Scanner, ...
How to create your own Go packages
How to run multiple Go files, and how to use third-party packages
Go tools
Debugging Go code, go doc, and others.
...and more.
How to declare a variable
Parts of a variable declaration syntax
Naming rules
Path package
Path.Split function
Function declaration syntax
Using blank-identifier with multiple result returning expressions
Recommendations about when to use a short declaration vs a variable declaration.
Code examples
How to change the type of a value to another type?
Type conversion expression syntax
Importance of the order of type conversions
Rules
Getting arguments from the command-line
os Package and os.Args
Introduction to Slices
Index expressions
"There only two hard things in computer science: Cache invalidation and Naming things."
The subject of this lecture is about naming things of course.
We're going to look at a lot of examples for properly naming your identifiers.
NOTE: This lecture is about using names in Go in general.
What is a Raw String Literal?
String Literals vs Raw String Literals
Code Along Examples
How to get the length of a string?
Interesting details about the len function
Calculating the length of unicode characters
Very gentle introduction to Runes and Codepoints
Introduction and usage of strings package
Getting input from the command line
And manipulating it using the strings package
String concatenation and using functions
What's iota? Why you want to use it? What it does?
Using blank-identifier in constant declarations
Creating a timezone table using iota and constants
How to print formatted output?
How Printf works
The mechanics of the Printf function
What is an escape sequence?
What is an escape character?
How to print the type of any value?
Examples for common verbs
Swiss Army Knife Verb
Argument Indexing
Type-Safety and Printf
Changing the printed precision
What's an expression switch?
What's a switch condition? How it works?
What's a case clause?
What's the difference between a switch statement and an if statement?
Until now, you were using singular values. Now it's time to learn about more advanced data types.
In this part you're going to learn almost everything about the composite types.
We're starting with the arrays, that is one of the composite types.
You're going to learn:
What's an array
How Go represents an array in computer memory
How to use arrays
You're going to learn:
An example usecase for arrays (cont.)
Using parallel arrays for representing data
Gotchas when using the for range clause with arrays
You're going to learn:
Composite literal declaration syntax
How an array literal simplifies creating new arrays
Useful feature of trailing commas in composite literals
Ellipsis syntax when declaring arrays
Zero values of array elements
You're going to refactor the Hipster's Love Bookstore example to array literals.
Use arrays to print random moods from an array.
Learn how to use the random number generator with arrays.
You're going to learn:
How Go assign an array to another array?
Importance of comparison when assigning arrays
Code along example for the copying behavior and array assignments
You're going to learn:
How to use multi-dimensional arrays (array of arrays)?
The rules of multi-dimensional array declaration and usage
Simplified array literal element declaration syntax
Refactor a program that uses single-dimensional arrays to multi-dimensional arrays
Refactor the previous Moodly challenge to multi-dimensional arrays
You're going to learn:
Rarely known feature of Go arrays: Keyed elements
Use keyed elements to describe the index positions
Hidden details of the keyed element declaration in array literals
Cryptocurrency exchange ratios program using the keyed elements
You're going to learn:
The difference between named and unnamed types
The relation of composite types and unnamed types
Comparison and assignment rules of named and unnamed composite types
Code along usage example
You can find the links about the detailed explanations for the challenge steps and solutions.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.