当前位置: 移动技术网 > IT编程>开发语言>Java > 2020-08-10

2020-08-10

2020年08月12日  | 移动技术网IT编程  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网