gpt4 book ai didi

node.js - 我不明白 golang,为什么我的应用程序不调用这个函数并且表现得不像 nodejs

转载 作者:数据小太阳 更新时间:2023-10-29 03:46:17 24 4
gpt4 key购买 nike

我对 golang 完全陌生。但是我有一些来自nodejs的知识

现在我想学习 Go,在这里你可以看到一个应该启动网络服务器的应用程序,然后它应该向控制台打印 hello。

但似乎是在行之后

http.ListenAndServe(":"+serverportString, nil)

它完全停止了。在 node js 中它会同时运行。我这里有误会吗?

下一行是

sayhello()

应该启动向控制台打招呼的功能。但它就在之前停止了。

这里可以看到完整的代码

// it should start a web server at port 8080
// and it should print hello to the console

package main

import (
"fmt"
"net/http"
"strconv"
)

var serverport int = 8080

func main(){
serverportString := strconv.Itoa(serverport)

http.HandleFunc("/", handler)
http.ListenAndServe(":"+serverportString, nil)
sayhello()

}

func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func sayhello () {
// now print hello to the console
fmt.Println("hello")

最佳答案

问题出在 http.ListenAndServe(":"+serverportString, nil) 这行。

ListenAndServe是一个阻塞调用,通常保留在 main 的最后一条语句中。

您可以使用 go http.ListenAndServe(...) 在 goroutine 中启动它,然后 sayhello() 函数将被调用,但随后整个程序将到达 main 的末尾,所有 goroutines 将被终止。

关于node.js - 我不明白 golang,为什么我的应用程序不调用这个函数并且表现得不像 nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27970869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com