throw: todas as goroutines estão dormindo - deadlock

Dado o seguinte programa Go simples

package main

import (
    "fmt"
)

func total(ch chan int) {
    res := 0
    for iter := range ch {
        res += iter
    }
    ch <- res
}

func main() {
    ch := make(chan int)
    go total(ch)
    ch <- 1
    ch <- 2
    ch <- 3
    fmt.Println("Total is ", <-ch)
}

Eu estou querendo saber se alguém pode me esclarecer por que eu recebo

throw: all goroutines are asleep - deadlock!

obrigado

questionAnswers(2)

yourAnswerToTheQuestion