2020-08-10
程序员文章站
2022-06-15 22:13:50
GO语言创建web服务记录创建web服务可以使用很多种方法 这里是用的是基于GO语言内置API创建的 由于本人是之前是做java的所以下面的一些说法可能不够严谨 希望大家理解 谢谢程序入口文件// TestWeb project main.gopackage mainimport ("TestWeb/function""TestWeb/recordlog""fmt""net/http" //导入go语言内置的http服务"github.com/julienschmidt...
GO语言创建web服务记录
创建web服务可以使用很多种方法 这里是用的是基于GO语言内置API创建的 由于本人是之前是做java的所以下面的一些说法可能不够严谨 希望大家理解 谢谢
程序入口文件
// TestWeb project main.go
package main
import (
"TestWeb/function"
"TestWeb/recordlog"
"fmt"
"net/http" //导入go语言内置的http服务
"github.com/julienschmidt/httprouter" //导入路由设置的包
)
var (
routerA *httprouter.Router
Host string
Port string
)
func init() {
recordlog.SetLogLevel(recordlog.LevelDebug) //设置日志级别
setRouter()
}
//设置接口地址
func setRouter() {
routerA = httprouter.New()
routerA.GET("/sz.com/getMassage", function.TestFuncObj.GetMessage) //设置接口地址和都映射方法 后面会分析映射的方法 功能方法具有固定的格式
}
func main() {
Host = "127.0.0.1"
Port = "8888"
recordlog.Debug("项目启动") //设置日志组件
fmt.Println("Hello World!")
addr := Host + ":" + Port //设置ip和端口
recordlog.Debug("Start HTTP Server Listen In", addr, "...")
http.ListenAndServe(addr, routerA) //开启http服务 指定ip 端口号和 路由信息
}
功能方法文件
package function
import (
"fmt"
"net/http"
"github.com/julienschmidt/httprouter"
)
type TestFunc struct{}
//注释2 创建结构体的指针对象 用于调用下面的方法
var TestFuncObj = new(TestFunc)
/*
功能那个方法具有固定的格式 func (参数名称 结构体的指针类型) 方法名称(w http.ResponseWriter, r *http.Request, _ httprouter.Params) 参数是固定的
*/
func (this *TestFunc) GetMessage(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
fmt.Println("============打印数据=============")
}
踩坑记录
.\main.go:27:56: invalid method expression function.TestFuncObj.GetMessage (needs pointer receiver: (*function.TestFuncObj).GetMessage)
这个错是因为在功能方法中没有创建指针都对象 直接使用结构体调用方法而产生的 注释2的位置
.\main.go:27:56: function.TestFuncObj.getMessage undefined (cannot refer to unexported method getMessage)
这个错是一个常识性错误 在声明方法时 如果方法首字母大写则可以在其他文件中调用 如果方法首字母小写则在文件外无法调用 这个错误就是因为方法的首字母小写造成的
本文地址:https://blog.csdn.net/xiansheng0813/article/details/107907870