吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 246|回复: 20
收起左侧

[讨论] 计划开一个go语言的记录帖子!不知道有没有人看!

[复制链接]
prettyafei 发表于 2024-12-22 19:13
本帖最后由 prettyafei 于 2024-12-25 10:34 编辑

最近接到一个商业项目
经过漫长的扯皮
最终以一台酷路泽的四个月油价谈妥
由于是商业项目
核心不会分享
只是记录一下第一次用go开发高性能商业项目的一个记录吧

有人喜欢就继续更新

最终确认的框架是go+gin+fyne (选择fyne是为了兼容windows、linux、mac  以及后期可能会添加的移动端)
后端是go+gin+mysql+gorm
管理端就是vue了

确认了框架,明天开始更新!

第一天:准备后端api和数据库表结构设计

第一天:准备后端api和数据库表结构设计

环境配置就不说了 百度一堆

一、

go init  //初始化项目

go get -u github.com/gin-gonic/gin //安装gin
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

//main.go
package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "Hello, World!",
        })
    })
    r.Run()
}

go run .  运行 ok 没问题

二、

//conf/config.go

package config

import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

var DB *gorm.DB

func ConnectDB() {
    var err error
    // 配置数据库连接字符串,格式为:用户名:密码@(主机:端口)/数据库名?charset=utf8mb4&parseTime=True&loc=Local
    dsn := "your_username:your_password@(127.0.0.1:3306)/your_database_name?charset=utf8mb4&parseTime=True&loc=Local"
    DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err!= nil {
        panic("数据库连接失败: " + err.Error())
    }
}

//后面将配置优化到yml文件里面
//main.go
package main

import (
        "go-fyne/conf"
)

func main() {
        config.ConnectDB()
}
// 定义model  
// 路径models/user_model.go
//个人不喜欢将数据库操作放到model中。。。
package models

import(
)

type User struct {
        Id int `json:"id"`
        Name string `json:"name"`
}

//绑定数据库表名
func (User) TableName() string {
        return "user"
}
//Controllers/user_controller.go
package controllers

import (
        "github.com/gin-gonic/gin"
        "net/http"
        "go-fyne/models"
        "go-fyne/conf"

)

func CreateUser(c *gin.Context) {
        var user models.User
        if err := c.BindJSON(&user); err != nil {
                c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
                return
        }
        result := config.DB.Create(&user)
    if result.Error!= nil {
        c.JSON(http.StatusInternalServerError, gin.H{"error": result.Error.Error()})
        return
    }
    c.JSON(http.StatusCreated, user)

}
//routers/router.go
package routers

import (
    "github.com/gin-gonic/gin"
    "go-fyne/controllers"
)

// SetupUserRoutes 用于设置用户相关的路由
func SetupUserRoutes(r *gin.Engine) {
    userGroup := r.Group("/users")
    {
        userGroup.POST("", controllers.CreateUser)
        // userGroup.GET("/:id", controllers.GetUser)
        // userGroup.PUT("", controllers.UpdateUser)
        // userGroup.DELETE("/:id", controllers.DeleteUser)
    }
}
//更新main.go
package main

import (
        "go-fyne/conf"
        "go-fyne/routers"

        "github.com/gin-gonic/gin"
)

func main() {
        config.ConnectDB()

        r := gin.Default()
    routers.SetupUserRoutes(r)
    r.Run()
}


代码只是截取了部分,省略的部分就是常见的增删改查了,没啥好写的。
鉴权中间件 明天再加,今天先把前后端框架搭建起来。

第二天 增加鉴权中间件

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

mychose 发表于 2024-12-23 07:42
加油加油看好你
lankii 发表于 2024-12-23 08:02
goframe 有大量轮子干嘛不用,不过mvc的新增个东西要连改好几个地方,确实没有gin直撸爽
anning666 发表于 2024-12-23 08:40
据说go的高并发很牛X,欢迎大佬试水,会持续关注~~~
notproblem 发表于 2024-12-23 08:44
感谢大佬分享,大佬谈谈go的实际体验呢,一直只听了Go的大名
linix 发表于 2024-12-23 09:12
期待更新、分享
makeMapleLeaf 发表于 2024-12-23 09:17
期待分享使用感受
 楼主| prettyafei 发表于 2024-12-23 09:20

谢谢 晚上更新
 楼主| prettyafei 发表于 2024-12-23 09:22
lankii 发表于 2024-12-23 08:02
goframe 有大量轮子干嘛不用,不过mvc的新增个东西要连改好几个地方,确实没有gin直撸爽

软件是运行在各个系统的独立软件,需要考虑跨平台,所以frame并不是最佳选择
 楼主| prettyafei 发表于 2024-12-23 09:23
anning666 发表于 2024-12-23 08:40
据说go的高并发很牛X,欢迎大佬试水,会持续关注~~~

转go也有几个月了,
个人感觉想比c  相比java  
go给我的感觉是 简洁 高效
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-2 19:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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