Go 后端开发实践

6

主题

8

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2022-11-30 10:08:06 | 显示全部楼层
Go 后端开发实践

前面我们基于 vue 实现了一个管理系统前端界面,前端主要负责数据展示,真正的数据处理,逻辑处理实际上还是在后端。本文简述一下使用 go 作为后端开发语言的一些基础实践。
前言

Go 语言是最近几年成长起来的语言。其倚靠谷歌,具有并发编程设计优势,同时在在云开发上占据不可或缺的地位,是一门值得学习的后端语言。Go 语法简单,容易上手,同时社区生态也比较活跃,有一些比较成熟的后端框架;相较于 c++ 的晦涩,go 更加容易开发,对比 java 的冗杂,go 更加简洁,所以把 go 作为高级语言入门也是非常不错的。但是 go 还是有很多不成熟的地方,不过 go 开发团队一直在前进。目前在市场上,主要是云服务开发、中间件、游戏服务器等方向上发光发热。
服务器

了解过软件设计的同学应该都知道这两种常用架构模式,不管是 c/s 还是 b/s,一定都离不开 s。s 是服务器(server)的简称。其实我认为这两种模式并没有本质的区分,只是介于表现如何实现,到底是 client 还是基于浏览器展现,只是表现的效果侧重有所不同。
后端,其实是 b/s 架构里面的服务器的称呼,本质就是服务器。服务器是指:一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器(能使用户在其它计算机存取文件),数据库服务器和应用程序服务器。运行这些软件的计算机,或稱為网络主机(host)。举个栗子:知乎的服务器需要处理我们的用户信息,存储用户发表的文章,计算用户应该受到什么样内容的推荐等等,而这些运算。存储业务实现则运行在网络主机上。
环境准备


  • Go 环境安装。无论我们选择什么语言,都需要安装语言的开发环境。官网提供了各种环境的安装包,建议安装最新的稳定版,go 安装的时候会帮我们设置环境变量,go 有两个比较迷惑的环境变量 GOPATH GOROOT 前者是我们的项目存放的路径,后者是 go 安装路径。在 go mod 没有应用的版本,go 项目只能存在GOPATH 路径,后来修复了这个槽点,目前GOPATH 主要用于存放 go get 获取的项目,而开发项目路径随意。
  • GoLand/VsCode: 一个编辑器,编辑器为我们提供很多便利,诸如代码补全,自动包导入等,最初学习编程的时候,网上有很多帖子说不要用高级编辑器,要从文本编辑器一行行手敲代码做起,其实不然,编程绝不是背代码,理解并学会使用才是核心。
  • 命令行:Go 安装成功与否的一个一个检查方案就是在 cmd 输入 go version查看版本号及go env查看环境变量。以及后续 go 程序的运行,go get 等都需要用到命令行操作。
最简单的 HTTP Server

Go SDK net/http 包为我们提供了一些基础实现。
package main

import (
    "fmt"
    "net/http"
)

// 请求
func hello(w http.ResponseWriter, req *http.Request) {
    _, err := fmt.Fprintf(w, "hello\n")
    if err != nil {
        return
    }
}

func main() {
  // 定义请求路径及响应函数
    http.HandleFunc("/hello", hello)
  // 启动一个服务并监听 8080 端口
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        fmt.Printf("err: %v", err)
        return
    }
}
如上,启动一个 server 很简单,但是这个 server 能做事情还比较少,我们的server要提供各种服务,诸如注册、登录、查询信息,上传图片等功能,那么一个简单的 main.go 还远远不够,那么如何扩展并提供更好的实现呢?
快速易用的框架

我们可以使用 go SDK 提供的包就能实现一个服务器了,但是一个项目不是简简单单的几个请求,所以我们需要有一些封装,比如路由、比如 handler。我们不推荐新手直接上手框架,或者至少你读过一遍基础文档。Go 常用 web 框架有 Beego、gin等,beego 大而全,gin 相对可修改的更多,本文选择使用 gin 来快速搭建一个后端。

  • install gin
go    go get -u github.com/gin-gonic/gin
2. 创建一个文件夹,作为我们的项目路径,并使用 go mod
go    go mod init project_name // 初始化包引用
3. Coding...(gin官方文档有详细的指南,如创建 main 函数、按照功能划分的包组织等)PS:详细项目源码公众号回复gin获得。

4. 运行及测试

数据库

服务器提供运算服务,同时一些需求如用户注册登录,用户数据存取同样也是后端开发的重要部分,我们常调侃后端开发就是在CURD(增删改查),确实,这是业务的重要部分。前面前后端开发图谱提到了 DB 的学习路线,后端程序运行中怎样使用数据库呢。
其实 Database 如 mysql 本身即服务,是一个数据库服务器,我们一般业务是应用服务器,我们把数据存放在数据服务器,使用的时候访问数据服务即可。我们可能知道一些可视化db工具(Navicat)或命令行指令(select)是如何操作数据库的,同样,程序也有是通过一些指令来实现的。go 语言为我们提供了访问各种 DB 的工具类,如 mysql Driver
总结

本文简单阐述了 Go 开发一个后端的实践流程,意在从广义上理解Go语言及后端开发是什么,如何实现。一个项目是一篇文章说不清楚的,项目如何组织代码?服务器的启动参数应该如何配置?MVC 设计是什么?DB访问太慢,如何做缓存?等等。知道的越多,就越觉得自己无知,学编程的道路就是这样,一点一点成长。关注我们,后续我们会持续输出以上提到的问题以及 服务器部署指南微服务指南k8s 实践游戏服务器和后端开发的差别等等。
回复

举报 使用道具

您需要登录后才可以回帖 登录 | 立即注册
快速回复 返回顶部 返回列表