Golang concurrent HTTP request I wanted to test the performance of concurrent http request in Go against node.js:

package main

import (
  "fmt"
  "time"
  "strconv"
  "net/http"
)

var responseCounter = 0
var requestCounter = 0
var count=0
var ch = make(chan int)

func sendRequest(){
    go func() {
        requestCounter++
        url := "https://www.google.co.in/#q=search_" +strconv.Itoa(requestCounter)
        resp, err := http.Get(url)
        if err != nil {
            fmt.Printf("\nError",err)
        }
        defer resp.Body.Close()
        count++
        ch &lt;- count
        sendRequest()
    }()
}

func main() {

    for i := 1; i&lt;100; i++{
        sendRequest()
    }

    for {
        select {
            case r := &lt;-ch:
                fmt.Printf("\nChannel ",r)
            case &lt;-time.After(50 * time.Millisecond):
                //sendRequest()
        }
    }
}


When I run this code the CPU usage goes very high (around 90%). Is there something wrong with this code? Have I used the Goroutines correctly?
Inside SendRequst you are calling SendRequest again, which will make your stack full of recursive calls.