Это тупик, потому что обе программы пытаются писать на каналы, которые никто не слушает. Первая программа пытается записать один канал, а поскольку второй не читает с него, он застрял там. Вторая процедура выполняет то же самое, поэтому они оба останавливаются, ожидая друг друга.
Самый простой способ справиться с этим - использовать канал с размером 1, поэтому запись может продолжаться без ожидания читателя.
strChan1 := make(chan string,1)
strChan2 := make(chan string,1)
Если вам нужно использовать каналы 0 длины, вам нужно использовать select, чтобы приспособить различные упорядочения goroutines:
select {
case strChan1 <- str:
<-strChan2
case <-strChan2:
strChan1 <- str
}