📅  最后修改于: 2023-12-03 15:39:51.958000             🧑  作者: Mango
尽管 Go 语言不是 Web 开发的首选语言,但它仍然有很多用途,从系统编程到网络编程。HTTP 包是每个 Go 项目都需要的一部分,允许您在 Go 中编写网页服务器,客户端和 Web 应用程序。在本文中,我们将讨论如何使用 Go 编写一个程序,该程序可以让用户在终端中搜索 Google 或输入 URL。
首先,我们需要获取用户输入。我们使用 Go 语言内置的 fmt
包来实现。以下是获取用户输入的代码片段:
var input string
fmt.Print("请输入要搜索的内容或 URL: ")
fmt.Scanln(&input)
上述代码中,fmt
包的 Print
函数用于打印提示用户输入内容的信息。Scanln
函数获取用户输入,存储在 input
变量中。
接下来,我们需要编写代码来搜索 Google。我们可以使用 net/http
包来向 Google 发送 HTTP 请求。以下是我们将使用的代码片段:
import (
"net/http"
"net/url"
"strings"
)
func searchGoogle(query string) error {
query = strings.ReplaceAll(query, " ", "+")
URL := "https://www.google.com/search?q=" + url.QueryEscape(query)
resp, err := http.Get(URL)
if err != nil {
return err
}
defer resp.Body.Close()
// 处理响应
return nil
}
上述代码中,我们将用户输入的内容(即查询)作为参数传递给 searchGoogle
函数。在函数的内部,我们将查询中的空格替换为加号,并将其作为查询参数拼接到 Google 搜索 URL 中。然后,我们使用 http.Get
函数向 Google 发送 HTTP 请求,并在收到响应后处理其响应。
如果用户没有输入查询,而只是输入了 URL,则我们需要打开该 URL。为此,我们使用 os/exec
包执行浏览器命令。以下是我们将使用的代码片段:
import (
"os/exec"
"runtime"
)
func openURL(url string) error {
var cmd string
if runtime.GOOS == "windows" {
cmd = "start"
} else if runtime.GOOS == "darwin" {
cmd = "open"
} else {
cmd = "xdg-open"
}
err := exec.Command(cmd, url).Start()
if err != nil {
return err
}
return nil
}
上述代码根据操作系统决定使用哪个命令来打开浏览器。我们使用 exec.Command
函数执行浏览器命令,并将 URL 作为参数传递给它。
以下是集成了我们编写的代码片段的完整 Go 程序:
package main
import (
"fmt"
"net/http"
"net/url"
"os/exec"
"runtime"
"strings"
)
func main() {
var input string
fmt.Print("请输入要搜索的内容或 URL: ")
fmt.Scanln(&input)
if strings.HasPrefix(input, "http://") || strings.HasPrefix(input, "https://") {
err := openURL(input)
if err != nil {
fmt.Println("无法打开 URL")
return
}
} else {
err := searchGoogle(input)
if err != nil {
fmt.Println("无法搜索 Google")
return
}
fmt.Println("已在浏览器中打开搜索结果")
}
}
func searchGoogle(query string) error {
query = strings.ReplaceAll(query, " ", "+")
URL := "https://www.google.com/search?q=" + url.QueryEscape(query)
resp, err := http.Get(URL)
if err != nil {
return err
}
defer resp.Body.Close()
// 处理响应
return nil
}
func openURL(url string) error {
var cmd string
if runtime.GOOS == "windows" {
cmd = "start"
} else if runtime.GOOS == "darwin" {
cmd = "open"
} else {
cmd = "xdg-open"
}
err := exec.Command(cmd, url).Start()
if err != nil {
return err
}
return nil
}
上述程序将提示用户输入搜索内容或 URL。如果用户输入的是 URL,则将在浏览器中打开该 URL;如果用户输入的是查询,则将在浏览器中打开 Google 搜索结果。