如何在Go中使用来自用户输入的URL?

时间:2016-01-28 06:12:23

标签: go

我几乎是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,   返回包含数据的字符串,并且包括   分隔符。

1 个答案:

答案 0 :(得分:1)

好的,ReadString似乎包含分隔符,因此您可以使用TrimSpace包中的strings。这似乎对我有用。

url = strings.TrimSpace(url)