猿问

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

我几乎是 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.

我的代码可能有什么问题?请抚平我的痛苦!:)


更新: import "strings"加上url := strings.TrimSpace(fmt.Sprintf("http://%s",txt))修复了问题。


ReadString 读取直到输入中第一次出现 delim ,返回一个包含数据的字符串,直到并包括分隔符。


扬帆大鱼
浏览 151回答 1
1回答

青春有我

好的,看起来ReadString包含分隔符,因此您可以TrimSpace从strings包中使用。这似乎对我有用。url = strings.TrimSpace(url)
随时随地看视频慕课网APP

相关分类

Go
我要回答