📌  相关文章
📜  搜索 google 或输入 url - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:39:51.958000             🧑  作者: Mango

搜索 Google 或输入 URL - Go 编程语言

尽管 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

接下来,我们需要编写代码来搜索 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,则我们需要打开该 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 搜索结果。