正则表达式结束修饰符在Go程序中不返回结果

I have a simple program in Go to aid in learning regular expressions. It runs in an infinite loop and has 2 channels, one which is used to provide input (input contains regex pattern and subject), and the second one, which provides the output.

usage: main.exe (cat)+ catcatdog

However there is propably something wrong in the code, as i can't seem to get any results with the $ modifier.

For example, i expect "cat" output from

main.exe cat$ cat
dog

yet receive zero results.

Code:

package main

import (
    "fmt"
    "regexp"
    "bufio"
    "os"
    "strings"
)

type RegexRequest struct {
    regex string
    subject string
}

func main() {
    regexRequests := make(chan *RegexRequest)
    defer close(regexRequests)

    regexAnswers, err := createResolver(regexRequests)
    defer close(regexAnswers)
    if(err != nil) { // TODO: Panics when exited via ctrl+c
        panic(err)
    }

    interact(regexRequests, regexAnswers)
}

func interact(regexRequests chan *RegexRequest, regexAnswers chan []string) {
    for {
        fmt.Println("Enter regex and subject: ")
        reader := bufio.NewReader(os.Stdin)

        line, err := reader.ReadString('
')
        if(err != nil) {
            panic(err)
        }

        regAndString := strings.SplitN(line, " ", 2);
        if len(regAndString) != 2 {
            fmt.Println("Invalid input, expected [regex][space][subject]")
            continue
        }

        regexRequests <- &RegexRequest{ regAndString[0], regAndString[1] }
        result := <- regexAnswers
        var filteredResult []string
        for _, element := range result {
            if(element != "") {
                filteredResult = append(filteredResult, element)
            } else {
                filteredResult = append(filteredResult, "EMPTY");
            }
        }

        fmt.Println(strings.Join(filteredResult, " "))
    }
}

func createResolver(inputChan chan *RegexRequest)(outputChan chan []string, err error) {
    if(cap(inputChan) > 0) {
        return nil, fmt.Errorf("Expected an unbuffered channel")
    }

    outputChan = make(chan []string)
    err = nil

    go func() {
        for {
            var regReq *RegexRequest= (<- inputChan);
            var regex *regexp.Regexp = regexp.MustCompile(regReq.regex)
            outputChan <- regex.FindAllString(regReq.subject, -1)
        }
    }()

    return
}

Check your regex pattern. For example,

Enter regex and subject: 
cat$ cat
dog

Enter regex and subject: 
^cat cat
dog         
cat