美丽心灵公益论坛

查看: 1512|回复: 5

两张图对比:

[复制链接]
累计签到:534 天
连续签到:1 天

887

主题

3114

回帖

4万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
48404
发表于 2023-5-24 19:46:15| 字数 63 | 显示全部楼层 |阅读模式








学php的朋友或许会陌生,但是学Java那是刻苦铭心!
其实,在学go的时候不一定要这样分层,但是习惯了你就会觉得这样分,优雅!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
累计签到:534 天
连续签到:1 天

887

主题

3114

回帖

4万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
48404
 楼主| 发表于 2023-5-24 19:54:37| 字数 85 | 显示全部楼层
https://blog.csdn.net/qq_46429858/article/details/124376456


...
反正,我也闹不清楚,只是跟着做
所以,把教程奉上
累计签到:534 天
连续签到:1 天

887

主题

3114

回帖

4万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
48404
 楼主| 发表于 2023-5-24 20:01:19| 字数 103 | 显示全部楼层
本帖最后由 legs+ 于 2023-5-24 20:06 编辑

中间件,以前,我闹不清楚。
以前无论C#或者Java都是通过程序流程或代码来实现,后来学深了感觉还是中间件好,透过AOP(切面)更理想。
就是封装的太厉害了
累计签到:534 天
连续签到:1 天

887

主题

3114

回帖

4万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
48404
 楼主| 发表于 2023-5-24 20:26:31| 字数 85 | 显示全部楼层
本帖最后由 legs+ 于 2023-5-24 20:27 编辑

我看现在的一些初学者喜欢,刷题,go的题都有人刷,而且还不少
我奉劝去刷Java、c#或c++
go的题,没有啥技术含量
累计签到:534 天
连续签到:1 天

887

主题

3114

回帖

4万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
48404
 楼主| 发表于 2023-5-31 15:22:04| 字数 600 | 显示全部楼层
写了一个小Demo:
  1. func SetupRouter() *gin.Engine {
  2.         if setting.Conf.Release {
  3.                 gin.SetMode(gin.ReleaseMode)
  4.         }
  5.         r := gin.Default()
  6.         // 告诉gin框架模板文件引用的静态文件去哪里找
  7.         r.Static("/static", "static")
  8.         // 告诉gin框架去哪里找模板文件
  9.         r.LoadHTMLGlob("templates/*")
  10.         r.GET("/", controller.IndexHandler)

  11.         // v1
  12.         v1Group := r.Group("v1")
  13.         {
  14.                 // 待办事项
  15.                 // 添加
  16.                 v1Group.POST("/todo", controller.CreateTodo)
  17.                 // 查看所有的待办事项
  18.                 v1Group.GET("/todo", controller.GetTodoList)
  19.                 // 修改某一个待办事项
  20.                 v1Group.PUT("/todo/:id", controller.UpdateATodo)
  21.                 // 删除某一个待办事项
  22.                 v1Group.DELETE("/todo/:id", controller.DeleteATodo)
  23.         }
  24.         return r
  25. }
复制代码
上面是路由
累计签到:534 天
连续签到:1 天

887

主题

3114

回帖

4万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
48404
 楼主| 发表于 2023-5-31 15:23:02| 字数 1,351 | 显示全部楼层
下面是控制器:
  1. func IndexHandler(c *gin.Context) {
  2.         c.HTML(http.StatusOK, "index.html", nil)
  3. }


  4. func CreateTodo(c *gin.Context) {
  5.         // 前端页面填写待办事项 点击提交 会发请求到这里
  6.         // 1. 从请求中把数据拿出来
  7.         var todo models.Todo
  8.         c.BindJSON(&todo)
  9.         // 2. 存入数据库
  10.         err:=models.CreateATodo(&todo)
  11.         if err != nil{
  12.                 c.JSON(http.StatusOK, gin.H{"error": err.Error()})
  13.         }else{
  14.                 c.JSON(http.StatusOK, todo)
  15.                 //c.JSON(http.StatusOK, gin.H{
  16.                 //        "code": 2000,
  17.                 //        "msg": "success",
  18.                 //        "data": todo,
  19.                 //})
  20.         }
  21. }

  22. func GetTodoList(c *gin.Context) {
  23.         // 查询todo这个表里的所有数据
  24.         todoList, err := models.GetAllTodo()
  25.         if err!= nil {
  26.                 c.JSON(http.StatusOK, gin.H{"error": err.Error()})
  27.         }else {
  28.                 c.JSON(http.StatusOK, todoList)
  29.         }
  30. }

  31. func UpdateATodo(c *gin.Context) {
  32.         id, ok := c.Params.Get("id")
  33.         if !ok {
  34.                 c.JSON(http.StatusOK, gin.H{"error": "无效的id"})
  35.                 return
  36.         }
  37.         todo, err := models.GetATodo(id)
  38.         if err != nil {
  39.                 c.JSON(http.StatusOK, gin.H{"error": err.Error()})
  40.                 return
  41.         }
  42.         c.BindJSON(&todo)
  43.         if err = models.UpdateATodo(todo); err!= nil{
  44.                 c.JSON(http.StatusOK, gin.H{"error": err.Error()})
  45.         }else{
  46.                 c.JSON(http.StatusOK, todo)
  47.         }
  48. }

  49. func DeleteATodo(c *gin.Context) {
  50.         id, ok := c.Params.Get("id")
  51.         if !ok {
  52.                 c.JSON(http.StatusOK, gin.H{"error": "无效的id"})
  53.                 return
  54.         }
  55.         if err := models.DeleteATodo(id);err!=nil{
  56.                 c.JSON(http.StatusOK, gin.H{"error": err.Error()})
  57.         }else{
  58.                 c.JSON(http.StatusOK, gin.H{id:"deleted"})
  59.         }
  60. }
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|免责及版权声明|关于|美丽心灵公益论坛

GMT+8, 2025-10-29 15:10 , Processed in 0.046024 second(s), 32 queries .

Powered by Discuz! X3.4

!copyright!

快速回复 返回顶部 返回列表