在Go語言中,可以通過使用標準庫中的"net/http"包來實現HTTP服務器和客戶端。
下面是一個簡單的HTTP服務器示例:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
在上面的示例中,我們定義了一個handler函數來處理HTTP請求,并通過http.HandleFunc函數將其注冊到根路徑"/"上。然后,調用http.ListenAndServe函數來啟動HTTP服務器,并監聽端口8080。
接下來是一個簡單的HTTP客戶端示例:
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
resp, err := http.Get("http://localhost:8080")
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(body))
}
在上面的示例中,我們通過http.Get函數向"http://localhost:8080"發起GET請求,并讀取響應體內容。然后打印響應的內容。
需要注意的是,在實際開發中,我們通常會對HTTP請求和響應進行更多的處理,例如設置請求頭、處理響應狀態碼、處理錯誤等。Go語言的"net/http"包提供了豐富的功能和接口,可以滿足各種HTTP服務器和客戶端的開發需求。