ok so yes im new to golang, but not to coding, I'm a bit confused with the way functions are working with golang, in this 2 weeks I have 9 times out or 10 I had an issue it was related to funtions... I'm no lazy I have search all over for examples to inspire me, but they are all under one main() funtion. I'm trying to have a http.get in one funtion and many other functions call this funtion everytime we need to use http.get so we dont repeat code over and over.. example:(this is not the actual code)
func myfunction(site) []byte {
resp, err := client.Get(site) // client is because Im tunneling thing on a proxy TOR and had to create some helpers.. but this is working ok.
return resp
}
func magic(staff) string {
// do things and create websiteurl with staff and onther contants
site := myfunction(website)
contents, err := html.Parse(site.Body)
//....
//....
return result
}
main() {
//... stuff happens :)
}
well the error is for example because I keep changing things around and getting different errors. or not at all.. but then no result..
cannot use resp.Body
(type io.ReadCloser) as type []byte
in return argument ./gobot.go:71: cannot use site (type []byte) as type io.Reader in argument to html.Parse:
when I do not get an error that is how I did it the first time the Site.Body will do nothing when parsing... I put a couple of debug prints to STDOUT and I had results like two sequence of numbers.
so basically how do I return a "result" of my query from one function to the original so it can then be parse and used? I hate to repeat code so trying to keep the repetitive code in one function and have it get it call when needed it.
thanks
myfunction
has the wrong return type. Instead of []byte
it should return *http.Response
.
func myfunction(site string) *http.Response {
resp, err := client.Get(site)
if err != nil {
log.Fatal(err)
}
return resp
}