我几乎是Go语言的新手,我目前的问题是将用户输入的URL读入变量,作为参数传递给http.Get()。
以下代码
package main
import (
"bufio"
"fmt"
"net/http"
"os"
"reflect"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter URL: ")
txt, _ := reader.ReadString('\n')
fmt.Println(reflect.TypeOf(txt)) // Get object type
//url := fmt.Sprintf("http://%s",txt)
url := "http://google.com"
fmt.Println(reflect.TypeOf(url)) // Get object type
resp, err := http.Get(url)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
} else {
fmt.Printf("%s\n", resp.Status)
}
}
完美运作:
d:\Go\bin>get_status
Enter URL: google.com
string
string
200 OK
但是当我取消注释代码的第16行(同时注释掉第17行)
url := fmt.Sprintf("%s",txt)
//url := "http://google.com"
使用来自用户输入的URL,我遇到了问题:
d:\Go\bin>get_status
Enter URL: google.com
string
string
Get http://google.com
: dial tcp: GetAddrInfoW: No such host is known.
我的代码有什么问题?请安慰我的痛苦! :)
UPD :
import "strings"
加url := strings.TrimSpace(fmt.Sprintf("http://%s",txt))
解决了问题。
ReadString读取直到输入中第一次出现delim, 返回包含数据的字符串,并且包括 分隔符。
答案 0 :(得分:1)
好的,ReadString
似乎包含分隔符,因此您可以使用TrimSpace
包中的strings
。这似乎对我有用。
url = strings.TrimSpace(url)