Channels help different parts of a Go program talk to each other safely and easily. They let you send and receive data between tasks running at the same time.
0
0
Why channels are used in Go
Introduction
When you want two or more tasks to share information without mixing things up.
When you need to wait for a task to finish before moving on.
When you want to organize work so tasks can run at the same time without errors.
When you want to pass messages between parts of your program that run together.
When you want to avoid confusing data problems by using a safe way to share data.
Syntax
Go
var ch chan Type ch = make(chan Type) // Send data ch <- value // Receive data value := <-ch
Channels are typed, meaning they only carry one kind of data.
You create a channel with make before using it.
Examples
This creates a channel for integers, sends 5, then receives it.
Go
ch := make(chan int) // Sending data ch <- 5 // Receiving data value := <-ch
Here, a string channel is used to send and receive a greeting.
Go
messages := make(chan string) // Sending a message messages <- "hello" // Receiving a message msg := <-messages
Sample Program
This program creates a channel to send a string from a new task (goroutine) back to the main task. It shows how channels help tasks communicate safely.
Go
package main import ( "fmt" ) func main() { ch := make(chan string) // Start a new task to send a message go func() { ch <- "Hi from goroutine!" }() // Receive and print the message msg := <-ch fmt.Println(msg) }
OutputSuccess
Important Notes
Channels block the sender until the receiver is ready, which helps keep tasks in sync.
Using channels avoids the need for complicated locks or shared memory.
Summary
Channels let different parts of a program send and receive data safely.
They help tasks running at the same time work together without errors.
Channels make communication between tasks simple and clear.