如何在命令行中运行Golang的main.go打开网页?
如何在命令行中运行Golang的main.go打开网页? (另外什么是"反引号"??我用反引号标记代码但显示效果很差。)
我使用Go语言创建了一个简单的网页:
import (
"fmt"
"net/http"
)
func handlerFunc(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "<h1>Welcome to my website!</h1>")
}
func main() {
http.HandleFunc("/", handlerFunc)
http.ListenAndServe(":80", nil)
}
当我尝试执行>go run main.go时,Windows会临时打开一个新的命令窗口,但不会打开浏览器页面。我已经确认Go安装正确,Go工作区已设置,所有路径都已配置。
如何让程序自动打开浏览器?
更多关于如何在命令行中运行Golang的main.go打开网页?的实战教程也可以访问 https://www.itying.com/category-94-b0.html
如果这确实没有输出任何内容,那么你的服务器正在运行并应该提供内容。你尝试过打开 http://localhost:8000 吗?
更多关于如何在命令行中运行Golang的main.go打开网页?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
请使用 fmt.Println 打印监听和服务的错误结果,并确保在读取输出前窗口不会关闭。作为最后手段,您可以在打印后直接添加 timer.Sleep。
然后复制并粘贴您看到的错误信息。
另外,需要安装 xampp,至少不需要 apache!
func main() {
fmt.Println("hello world")
}
BINGO!!!
所以,这是我第一次涉足服务器编程……我完全不知道自己在做什么。我原以为运行 go main 会打开浏览器,但实际上它创建了与服务器相关的内容,然后我必须手动打开浏览器并输入网址。 这样做之后,一切就按预期运行了。
感谢大家耐心且积极的反馈!!!
- 您可以在电脑上指定从
1025到65535范围内的端口。 - 弹出窗口 “Windows 安全警报” 是为了提示有一项服务(您的 Go 应用程序)需要使用一个端口通过互联网进行通信。点击
允许访问按钮不会对您的电脑造成任何危害,因为此应用程序仅仅是您的 Go Web 应用。
如果我说错了,请纠正我。
sklanglykrangly: 第一次尝试从命令行运行网页。我实际上是在xampp目录中工作。我使用xampp进行其他本地开发。
关于此有两点小观察:
- 你上面的代码是提供页面的,因此你需要一个浏览器来访问此服务器提供的页面。不要指望你的代码会打开任何浏览器。
- 如果你的系统中运行了其他服务器,请注意使用的端口,不要在你的Go程序中使用这些端口。
弹窗只是来自Windows防病毒软件。
我使用xampp进行其他本地开发,没有出现问题。在我进行这些操作时它正在运行。
我这样做是为了打印错误,但没有输出任何内容:
func main() {
http.HandleFunc("/", handlerFunc)
http.ListenAndServe(":8000", nil)
a := http.ListenAndServe(":8000", nil)
fmt.Println(a)
是的,我尝试过8080、8000、3000和其他端口。我突然想到——我是否应该将所有Go工作文件都保存在Go工作区位置(D:\Documents\Go)?我对Go完全陌生,这是我第一次尝试从命令行运行网页。实际上我是在xampp目录中工作。我使用xampp进行其他本地开发。
附上了具体情况的截图。第一张是运行main后弹出的窗口。

接下来是我的路径信息。我很确定这些都是正确的。

要在Go程序中自动打开浏览器,可以使用os/exec包来执行系统命令。以下是修改后的代码示例:
package main
import (
"fmt"
"net/http"
"os/exec"
"runtime"
"time"
)
func handlerFunc(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "<h1>Welcome to my website!</h1>")
}
func openBrowser(url string) {
var cmd string
var args []string
switch runtime.GOOS {
case "windows":
cmd = "cmd"
args = []string{"/c", "start", url}
case "darwin":
cmd = "open"
args = []string{url}
default: // linux, unix, etc.
cmd = "xdg-open"
args = []string{url}
}
exec.Command(cmd, args...).Start()
}
func main() {
http.HandleFunc("/", handlerFunc)
// 给服务器一点启动时间
go func() {
time.Sleep(100 * time.Millisecond)
openBrowser("http://localhost:80")
}()
http.ListenAndServe(":80", nil)
}
关于反引号的问题:在Markdown中,反引号(`)用于标记代码。单个反引号用于行内代码,三个反引号用于代码块:
行内代码:`go run main.go`
代码块:
```go
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
确保在代码块的开头和结尾使用三个单独的反引号,而不是其他字符。


