This course has provided me with valuable skills and knowledge. It was an exceptional learning experience that delved into fundamental concepts comprehensively. I wholeheartedly endorse this course and recommend it to anyone interested in mastering Google's Golang.
I express my gratitude for the invaluable support and generosity of Professor Todd Mcleod from California State University. His coupon code on Twitter enabled me to access this course. The course not only covered technical aspects but also delved into essential life success strategies.
Sincerely, Md. Nihad Hossain
I've shared Todd Mcleod's course outline on my GitHub repository.
Course Outline Links:
One of the most significant takeaways from this course is the persistence and patience required for success, coupled with a growth mindset.
- Utilize Multicore CPUs efficiently.
- Fastest growing and highly remunerative programming language.
- Developed by exceptional minds: Rob Pike, Ken Thompson, Robert Geriesemer.
- Embrace Grit and Perseverance, echoing Angela Lee Duckworth.
- Differentiate between a Growing Mindset and Fixed Mindset.
- "Begin with the End In Mind" - Setting goals.
- "Put First Things First" - Managing time effectively.
- "Success is the result of patience and persistence."
- "Drop by drop, the bucket gets filled."
- Go Forums
- Official Documentation:
- golang spec
- effective go
- Differentiating golang.org and godoc.org:
- golang.org: Information about the language and standard library.
- godoc.org: Covers standard library and third-party packages. [https://pkg.go.dev/]
- Tracing back to computer history with ENIAC (Electronic Numerical Integrator And Computer).
- Command Line Interface (CLI) basics:
- List of Directories:
ls
- Change Directory:
cd
- Create Directory:
mkdir {folder_name}
- Create File:
touch {file_name.extention}
- Edit File:
nano {file_name.extention}
- Read File:
cat {file_name.extention}
- Remove:
rm -rf {file_name.extention}
- List of Directories:
- System and User Variables.
- Essential Go Environment Variables: GOPATH, GOROOT, GOBIN, GOOS, GOARCH.
- Useful Go Commands: version, env, help, fmt, run, build.
- Go module: Efficient dependency management. Links: [https://golang.org/ref/mod], go blog - [https://blog.golang.org/using-go-modules], [https://blog.golang.org/go116-module-changes]
- Upgrading and Adding Dependencies.
- Project Aristotle: [https://rework.withgoogle.com/print/guides/5721312655835136/]
- Golang Mascot: [Renne French - https://github.com/ashleymcnamara/gophers] [https://github.com/egonelbre/gophers]
- Entry point of a program:
func main
inside themain
package. - Package documentation structure.
- Exploring data types and underlaying types.
- Understanding computer functioning.
- Alan Turing's legacy and computer generations.
- Moore's law and popular coding scheme (UTF-8).
- Number systems: binary, decimal, octal, hexadecimal.
- Delving into constants, iota, bitshifting, and XOR operation.
- Extended Backus–Naur form (EBNF) for grammar representation.
- For and conditional statements: if, else if, switch, select (using channels).
- In-depth study of various statements.
- Primitive data types: int, float, string, boolean.
- Composite data types: struct, pointers, functions, interfaces, array, slices, channels, maps.
- Scope of variables, import/export, zero values, fmt package verbs.
- Creating custom types.
- Functions as code reuse mechanisms.
- Varied function practices: variadic parameters, closures, recursion, etc.
- Method sets and interface implementation.
- Exploring structs and pointers.
- Working with JSON: marshaling, unmarshaling, encoding, decoding.
- Differentiating concurrency and parallelism.
- Handling concurrency with sync and waitgroup.
- Tackling race conditions with sync.Mutex and atomic package.
- In-depth study of channels: buffered, unbuffered, directional, fan-in, fan-out.
- Effective error handling strategies.
- Comprehensive testing and benchmarking techniques.
- Utilizing Go Proverbs for efficient coding practices.
The course also provides insight into version control systems, source code management, and software configuration management.