A goroutine is a lightweight thread managed by the Go runtime.
Channels are a typed conduit through which you can send and receive values.
Buffered Channels is channel that only can receive and send values for the given capacity.
Go Pointers are those variables that hold the address of any variables. Use &
to create pointer, and use *
to access the value of the given pointer.
Interface is one of type that Go have, interface can be use for defining a method signature or can be use to hold other types to act like generic types. So when a function has parameters with type interface we cann give the param with any type.
A Mutex is used to provide a locking mechanism to ensure that only one Goroutine is running the critical section of code at any point in time to prevent race conditions from happening.