Go:Beego零基础到项目实战(1),2024年最新食堂大妈看完都会了

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注go)
img

正文

1.1.2 git安装

管理代码

1.1.3 工程管理

工作目录下新建三个文件夹

  • src:用于以代码包的形式组织并保存go源码文件,

  • pkg:用于存放经由go install命令构建的安装后的代码包,不需要手动创建

  • bin:与pkg目录类似,在通过go install命令完成安装后,保存由go命令源码间生成的可执行文件

1.1.4 bee工具:

管理beego项目

安装bee工具

  • go get github.com/beego/bee

  • 注意 将$GOPATH/bin添加到环境变量,这go get的时候会在bin目录下生成bee的可执行文件

  • 使用bee工具 运行bee可以看到bee参数,比如new,api,run等

1.1.5 安装beego:

go get github.com/astaxie/beego 升级 go get -u github.com/astaxie/beego

源码下载升级 访问 https://github.com/astaxie/beego ,下载源码,然后覆盖到 $GOPATH/src/github.com/astaxie/beego 目录,然后通过本地执行安装就可以升级了:go install github

1.1.6 安装goland编辑工具

1.2 第一个beego项目


bee new beego_project(项目名) BeegoProject 注意命名规范

create E:\go\workspace\src\beego_project

create E:\go\workspace\src\beego_project\conf\

create E:\go\workspace\src\beego_project\controllers\

create E:\go\workspace\src\beego_project\models\

create E:\go\workspace\src\beego_project\routers\

create E:\go\workspace\src\beego_project\tests\

create E:\go\workspace\src\beego_project\static\

create E:\go\workspace\src\beego_project\static\js\

create E:\go\workspace\src\beego_project\static\css\

create E:\go\workspace\src\beego_project\static\img\

create E:\go\workspace\src\beego_project\views\

create E:\go\workspace\src\beego_project\conf\app.conf

create E:\go\workspace\src\beego_project\controllers\default.go

create E:\go\workspace\src\beego_project\views\index.tpl

create E:\go\workspace\src\beego_project\routers\router.go

create E:\go\workspace\src\beego_project\tests\default_test.go

create E:\go\workspace\src\beego_project\main.go

New application successfully created! --创建成功标志

一个典型的 MVC 架构的应用,main.go是入口文件。

cd到创建好的项目:cd beego_project

然后运行启动命令:bee run

启动成功标志

访问:http:127.0.0.1:8080

也可以通过:

go run main.go启动,不通过bee run

1.3 使用mod


1.3.1 开启mod

go env -w GO111MODULE=on // 111指go的1.11版本

1.3.2 go-mod的使用

进入项目路径:

go mod init 【项目名】

go mod vendor

1.4 运行原理


运行项目的两种方式

进入项目中:

bee run // 可以检查代码是否修改,重新启动

go run main.go

二、前后端数据交互

====================================================================

2.1 模板文件及静态文件的使用


2.1.1 模板文件

默认路径:项目根目录下的views文件夹

修改路径:

  • beego.Run()之前设置:beego.SetViewsPath(“testview”)

  • 配置文件中设置:viewspath = “myview”

2.1.2 静态文件

默认路径:项目根目录下的static文件夹

修改路径:beego.Run()之前设置:beego.SetStaticPath(“/static”,“front”)

注意:第一个参数是前端使用的开始路径,第二个参数是对应的文件夹

2.2 各种类型数据渲染


2.2.1 字符串渲染

u.Ctx.WriteString(“hello world”)

2.2.2 模板渲染

  1. 结构体数据渲染

结构体:

type Student struct{

Name string

Age int

Gender string

}

赋值:

c.Data[“student”] = Student{Name:“知了课堂”,Age:18,Gender:“男”}

前端使用:

学生姓名:{{.student.Name}}

学生年龄:{{.student.Age}}

学生性别:{{.student.Gender}}

注意:结构体中的字段要在其他地方使用,比如首字母大写

  1. 数组数据渲染

lista := [5]int{1,2,3,4,5}

c.Data[“arr”] = lista

前端:

第一种:

{{range i , i, i,v := .arr}}

{{$i}}

{{$v}}

{{end}

第二种:

{{range .arr}}

{{.}}

{{end}}

  1. 结构体数组渲染

结构体:

type student struct {

Name string

Age int

Gender string

}

赋值:

arr_struct := [3]student{{Name:“hl”,Age:18,Gender:“男”},{Name:“hallen”,Age:19,Gender:“男”},{Name:“hallen1”,Age:191,Gender:“男”}}

c.Data[“arr_struct”] = arr_struct

前端获取:先循环数组,在获取结构体变量,注意是大写

{{range $v := .arr_struct}}

{{$v.Name}}

{{$v.Age}}

{{$v.Gender}}

{{range .books}}

{{.Name}}

{{.Author}}

{{end}}

  1. map数据渲染

//teacher :=map[string]string{“name”:“张三”,“age”:“18”}

teacher :=make(map[string]string)

teacher[“name”]=“老王”

teacher[“age”]=“30”

c.Data[“teacher”] = teacher

前端:

取出key对应的值

{{.teacher.name}}

{{.teacher.age}}

取出所有的key和value:

{{range k , k, k,v := .teacher}}

{{$k}}

{{$v}}

{{end}}

  1. 结构体和map组合渲染

结构体:

type student struct {

Name string

Age int

Gender string

}

赋值:

mapa := make(map[int]student)

mapa[101] = student{Name:“张三1”,Age:181,Gender:“男”}

mapa[102] = student{Name:“张三2”,Age:182,Gender:“男”}

mapa[103] = student{Name:“张三3”,Age:183,Gender:“男”}

c.Data[“hero_map”] = mapa

前端获取:先循环map,在获取结构体变量,注意是大写

{{range $v :=.hero_map}}

{{$v.Name}}

{{end}}

  1. 切片数据渲染

listb := []int{1,2,3,4,5,6,7}

c.Data[“list_b”] = listb

前端:只有一个值的时候默认是切片的元素,而不是角标

{{range $v := .list_b}}

{{$v}}

{{end}}

2.3 获取请求数据


获取url上的参数,?后面的 :http://127.0.0.1:8090/user/?id=111

可以使用数据绑定,请看数据绑定章节

GetString获取数据:

路由: beego.Router(“/user”, &controllers_user.UserController{})

访问路径:http://127.0.0.1:8090/user/?id=111

获取数据:

id := c.Input().Get(“id”)

id2 := c.GetString(“id”)

这种方式不行:

id3 := c.Ctx.Input.Param(“:id”)

获取url上的参数,/:id的 :http://127.0.0.1:8090/user/111

路由:beego.Router(“/user/?🆔int”, &controllers_user.UserController{})

访问路径:http://127.0.0.1:8090/user/111

获取数据:

id := c.GetString(“:id”)

id2 := c.Ctx.Input.Param(“:id”)

这种方式不行:

id3 := c.Input().Get(“:id”)

获取请求信息:

this.Ctx.Request 所有的请求信息

this.Ctx.Request.Header 请求头

this.Ctx.Request.Host 请求的主机

this.Ctx.Request.Method 请求的方法

获取form表单数据:

GetString(key string) string

GetStrings(key string) []string

GetInt(key string) (int64, error) --返回两个值

GetBool(key string) (bool, error) --返回两个值

GetFloat(key string) (float64, error) --返回两个值

举例:

前端form表单:

年龄1:

姓名1:

地址:

姓名2:

年龄2:

是:

否:

价格:


获取数据:

name := c.Input().Get(“name”) 获取的是第一个name的值

names := c.GetStrings(“name”) 获取所有的name的值,是个数组

age := c.Input().Get(“age”)

age,_ := c.GetInt64(“age”)

is_true , _ := c.GetBool(“is_true”)

price , _ := c.GetFloat(“price”)

form表单解析到结构体

type Student struct {

Id int

Name string form:"user_name"

Password string form:"password"

}

func (s *StudentController) Post() {

student := Student{} // 这里注意,变量名不能和结构体对象名不能相同

if err := s.ParseForm(&student); err != nil {

//handle error

return

}

fmt.Println(student)

fmt.Println(student.Name)

fmt.Println(student.Age)

fmt.Println(student.Addr)

s.TplName = “index.tpl”

}

ajax提交

2.4 文件上传


2.4.1 form方式上传

  1. 前端

前端:

上传文件:

注意:

这里必须设置enctype=“multipart/form-data”,不然浏览器不会传送文件

  1. 后端

type Upload struct {

beego.Controller

}

func (u *Upload)Get() {

u.TplName = “upload_file.html”

}

func (u *Upload)Post() {

// 获取上传的文件

f,h,err := u.GetFile(“upload_file”)

if err != nil {

fmt.Println(err)

return

}

defer f.Close()

// 生成时间戳,防止重名

timeUnix:=time.Now().Unix() // int64类型

time_str := strconv.FormatInt(timeUnix,10) // 将int64转为字符串 convert:转换

// 保存获取到的文件

err1 := u.SaveToFile(“upload_file”,“static/upload/”+time_str+h.Filename) // 这里必须有这个路径才会保存成功, 否则报错:The system cannot find the path specified

if err1 != nil{

fmt.Println(err1)

}

u.TplName = “index.tpl”

}

注意:

相同文件名的文件会被后面上传的覆盖,可以使用时间戳重命名文件

二、ajax方式上传

  1. 前端
  • processData 默认为true,当设置为true的时候,jquery ajax 提交的时候不会序列化 data,而是直接使用data

  • contentType: false 不使用默认的application/x-www-form-urlencoded这种contentType

  • 分界符:目的是防止上传文件中出现分界符导致服务器无法正确识别文件起始位置

  • ajax 中 contentType 设置为 false 是为了避免 JQuery 对其操作,从而失去分界符

2.5 多种格式数据输出


背景:假如前端或者提供的接口必须以指定的格式传输

json格式:会设置 content-type 为 application/json

type TestController struct {

beego.Controller

}

type Person struct {

Id int

Name string

Gender string

}

func (g *TestController)Get() {

test_data := Person{Id:123,Name:“zhiliao”,Gender:“男”}

g.Data[“json”] = &test_data -----这里必须叫json,因为ServeJSON()解析json变量的

fmt.Println(test_data)

g.ServeJSON()

//g.TplName = “test.html”

}

xml格式:会设置 content-type 为 application/xml

test_data := Person{Id:123,Name:“zhiliao”,Gender:“男”}

g.Data[“xml”] = &test_data -----这里必须叫xml,同上

g.ServeXML()

jsonp格式:会设置 content-type 为 application/javascript

test_data := Person{Id:123,Name:“zhiliao”,Gender:“男”}

g.Data[“jsonp”] = &test_data -----这里必须叫jsonp,同上

g.ServeJSONP()

yaml格式:会以文件传输的方式,yaml就是键值对

test_data := Person{Id:123,Name:“zhiliao”,Gender:“男”}

g.Data[“yaml”] = &test_data

g.ServeYAML()

yaml格式:

student:

  • name : “zhiliao”

  • age : 18

teacher:

  • name : “laowang”

-age : 38

addr: “市区”

说明:

  1. 大小写敏感

  2. 使用缩进表示层级关系

  3. 缩进不允许使用tab,只允许空格

  4. 缩进的空格数不重要,只要相同层级的元素左对齐即可

  5. '#'表示注释

  6. 以 - 开头的行表示构成一个数组,支持多维数组

三、view模块

===================================================================

3.1 常用模板语法


3.1.1 基本语法

  • 使用.来访问当前位置的上下文

  • 使用$来引用当前模板根级的上下文

  • 使用 $. 引用模板中的根级上下文

3.1.2其他常用模板语法

  1. 支持go语言的符号,这里只是符号的支持

① 字符串:{ { “zhiliao ” } }

② 原始字符串:{ { `zhiliao` } } 不会转义

③ 字节类型:{ { ’ a’ } } -->97 ascll码对应表: http://ascii.911cha.com/

④ nil:{ { print nil } } { {nil } }只有nil会报错:nil is not a command

  1. if:判断

  2. range:循环

注:range也支持else,表示空数组的时候执行

  1. template:对于模板的分模块处理很有用处,引入另一个模板文件

{{template “bottom.html” .}}

注意:如果引入的文件也需要获取动态数据,那{ {template “bottom.html” .} }中必须使用.访问当前位置的上下文

3.2 常用模板函数


  1. and

{ {and .X .Y .Z} }

只要有一个为空,则整体为空,如果都不为空,则返回最后一个

  1. or

{ {or .X .Y .Z} }

只要有一个不为空,则返回第一个不为空的,否则返回空

  1. index:读取指定类型对应下标的值

获取

后端:

this.Data[“data_map”] = map[string]string{“name”: “Beego”}

this.Data[“arrs”] = []int{1,2,3,4,5}

前端:

{{index .data_map “name”}}

{{index .arrs 1}}

  1. len:返回对应类型的长度

{ { .Content|len } }

  1. not:返回输入参数的否定值

{{not .is_ok }}

6.eq / ne / lt / le / gt / ge

  • eq:等于 equls

  • ne:不等于

  • lt:小于 less

  • le:小于等于 区别于lte

  • gt:大于 greater

  • ge:大于等于 区别于gte

  1. 内置模板函数

1.date 格式化时间

{{date .T “Y-m-d H:i:s”}}

  1. compare 比较

{{compare ‘a’ 97}}

  1. substr 截取字符串

{{substr “我是中国人” 0 4}}

  1. map_get 获取map的指定key值

{{ map_get .m “a” }}

  1. url_for

{{urlfor “TestController.List”}}

3.3 自定义模板函数


第一步:定义函数

func hello(in string)(out string){

out = in + “world”

return

}

第二步:AddFuncMap

// 在beego.Run()之前

beego.AddFuncMap(“hi”,helle)

第三步:前端使用

{{“hello world” | hi}}

四、controller模块

=========================================================================

4.1 配置文件的使用


4.1.1 读取配置

beego.AppConfig.String(“mysqluser”)

4.2.2 引入其他配置文件

app.conf是主配置文件。其他的配置文件需要再app.conf中引入

include “mysql_server.conf”

4.3.3 常用的配置

  1. ViewsPath:模板路径,默认值是 views。

  2. StaticDir:静态文件目录设置,默认是static

  3. sessionon:session 是否开启,默认是 false

  4. httpport:监听端口

  5. EnableXSRF:EnableXSRF

  6. XSRFExpire:XSRF 过期时间,默认值是 0,不过期。

  7. MaxMemory:文件上传默认内存缓存大小,默认值是1 << 26(64M)。

  8. RunMode:应用的运行模式,可选值为prod,dev或者test. 默认是dev, 为开发模式

4.2 路由详解


4.2.1 固定路由

一个固定的路由,一个控制器,然后根据用户请求方法不同请求控制器中对应的方法

beego.Router(“/hello”, &controllers_user.Hello{})

4.2.2 正则路由

beego.Router(“/api/?:id”, &controllers.RController{})

beego.Router(“/api/?🆔int”, &controllers.RController{})

:id([0-9]+) 或者 :id([\d]+) 或者 🆔int

:username([\w]+) 或者 :username:string

4.2.3 自动路由

注册路由的时候不需要指定url,只需要注册控制器即可

beego.AutoRouter(&controllers.UserController{})

规则:

/控制器名/方法名/后面的都是参数。。。

如:/user/get/123/456

4.2.4 自定义路由

注册路由的时候可以指定第三个参数,这个参数就是用来自定义路由的

用法: method :函数名

post:Login post请求的时候访问Login函数

get:User get请求的时候访问User函数

*:LoginOut 所有的请求方法都访问LoginOut函数

4.3 自定义过滤器


需要登录才能访问的

/cms/user/add

/cms/user/list

/cms/user/edit

/cms/book/add

不需要登录可以访问:

/

/login

/register

beego.InsertFilter(pattern string, position int, filter FilterFunc, params …bool)

  • 第一个参数表示过滤的路由规则,支持通配符

  • 第二个参数就是过滤器的位置,beego支持的有5种

  • BeforeStatic 静态地址之前

  • BeforeRouter 寻找路由之前

  • BeforeExec 找到路由之后,开始执行相应的 Controller 之前

  • AfterExec 执行完 Controller 逻辑之后执行的过滤器

  • FinishRouter 执行完逻辑之后执行的过滤器

  • 第三个参数为执行的函数

  • func(*context.Context) 参数必须是context.Context , context是beego包下的

  • 其他参数:使用默认得到true即可

示例:

func main() {

// 过滤器

beego.InsertFilter(“/*”, beego.BeforeRouter, controllers.LoginSpider1Filter)

beego.Run()

}

func LoginSpider1Filter(ctx *context.Context) {

// 获取session

id := ctx.Input.Session(“spider1_uid”)

if id == nil { // 说明未登录

ctx.Redirect(302,“/main/spider1/to_login”)

// 路由反转:beego.URLFor(“TestController.Get”)

}

}

注意:使用 session 的 Filter 必须在 BeforeStatic 之后才能获取,因为 session 没有在这之前初始化。

4.4 表单数据验证


4.4.1 安装

go get github.com/astaxie/beego/validation

4.4.2 使用

结构体定义tag

  • 验证函数写在 “valid” tag 的标签里

  • 各个函数之间用分号 “;” 分隔,分号后面可以有空格

  • 参数用括号 “()” 括起来,多个参数之间用逗号 “,” 分开,逗号后面可以有空格

  • 正则函数(Match)的匹配模式用两斜杠 “/” 括起来

  • 各个函数的结果的 key 值为字段名.验证函数名

type LoginParams struct {

Name string valid:“Required”

Age int valid:“Required;MinSize(2)”

Addr string valid:“Required”

}

func (l *LoginController) Post() {

valid := validation.Validation{}

// 解析到结构体

params := LoginParams{}

if err := l.ParseForm(&params); err != nil {

//handle error

return

}

//重写错误信息:validation.SetDefaultMessage(map)

var messages = map[string]string{

“Required”: “不能为空”,

“MinSize”: “最短长度为 %d”,

“Length”: “长度必须为 %d”,

“Numeric”: “必须是有效的数字”,

“Email”: “必须是有效的电子邮件地址”,

“Mobile”: “必须是有效的手机号码”,

}

validation.SetDefaultMessage(messages)

// 校验

b, err := valid.Valid(&params)

// 验证StructTag 是否正确

if err != nil {

fmt.Println(err)

}

if !b {

// 验证没通过,则b为false

for _, err := range valid.Errors {

fmt.Println(err.Key, err.Message)

message := err.Key + err.Message

l.Ctx.WriteString(message)

}

}

}

4.5 session和cookie


4.5.1 什么是session?

  • Session是在_无状态_的HTTP协议下,服务端记录用户状态时用于标识具体用户的机制

  • 它是在服务端保存的用来跟踪用户的状态的数据结构,可以保存在文件、数据库或者集群中

  • 在浏览器关闭后这次的Session就消失了,下次打开就不再拥有这个Session。其实并不是Session消失了,而是Session ID变了,

4.5.2 什么是cookie?

  • Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息

  • 每次HTTP请求时,客户端都会发送相应的Cookie信息到服务端。它的过期时间可以任意设置,如果你不主动清除它,在很长一段时间里面都可以保留着,即便这之间你把电脑关机了。

  • 每次客户端发请求的时候会自动携带该域名下的Cookie,不用域名间的Cookie是不能共享的

4.5.3 session和cookie:

  • Cookie 在客户端(浏览器),Session 在服务器端。

  • Cookie的安全性一般,他人可通过分析存放在本地的Cookie并进行Cookie欺骗。在安全性第一的前提下,选择Session更优。重要交互信息比如权限等就要放在Session中,一般的信息记录放Cookie就好了。

  • 单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie。

  • Session 可以放在 文件、数据库或内存中

  • 用户验证这种场合一般会用 Session。因此,维持一个会话的核心就是客户端的唯一标识,即Session ID。

  • Session 的运行依赖Session ID,而 Session ID 是存在 Cookie 中的,也就是说,如果浏览器禁用了 Cookie,Session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 Session ID)

4.5.4 beego中使用session:

  • 开启session

  • main.go中开启:

  • beego.BConfig.WebConfig.Session.SessionOn = true

  • 配置文件中开启:

  • sessionon = true

  • 使用sessio

  • 设置session

  • SetSession(name string, value interface{})

  • this.SetSession(“username”, “zhiliao”)

  • 获取session

  • GetSession(name string) interface{}

  • this.GetSession(“username”)

  • 删除session

  • this.DelSession(name string)

  • 在过滤器中获取session

  • ctx.Input.Session(“user_name”)

  • 关于session的一些其他配置

  • 设置是否开启 Session

  • beego.BConfig.WebConfig.Session.SessionOn

  • 默认为false

  • 设置 Session 过期的时间

  • beego.BConfig.WebConfig.Session.SessionGCMaxLifetime

  • 默认值是 3600 秒

  • 设置 cookie 的过期时间

  • beego.BConfig.WebConfig.Session.SessionCookieLifeTime

  • 设置sessionid加密算法

  • beego.BConfig.WebConfig.Session.SessionHashFunc

  • 默认值为 sha1

  • 修改sessionkey

  • beego.BConfig.WebConfig.Session.SessionHashKey

  • 默认的 key 是 beegoserversessionkey,建议在使用的时候修改该参数

  • 设置 cookies 的名字

  • beego.BConfig.WebConfig.Session.SessionName

  • Session 默认是保存在用户的浏览器 cookies 里面的,默认名是 beegosessionID,配置文件对应的参数名是:sessionname。

五、model模块

====================================================================

5.1 orm的使用


5.1.1 mysql安装

  • 用户名和密码的配置

5.1.2 navicat安装

5.1.3 beego中使用

  • 安装:

  • go get github.com/astaxie/beego/orm

  • go get github.com/go-sql-driver/mysql

  • 连接数据库:

  • orm.RegisterDriver(“mysql”, orm.DRMySQL)

  • orm.RegisterDataBase(“default”, “mysql”, “用户名:密码@tcp(IP:端口号)/数据库?charset=utf8”, 30)

  • 参数一:数据库的别名,用来在 ORM 中切换数据库使用

  • 参数二:驱动名称

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
如果浏览器禁用了 Cookie,Session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 Session ID)

4.5.4 beego中使用session:

  • 开启session

  • main.go中开启:

  • beego.BConfig.WebConfig.Session.SessionOn = true

  • 配置文件中开启:

  • sessionon = true

  • 使用sessio

  • 设置session

  • SetSession(name string, value interface{})

  • this.SetSession(“username”, “zhiliao”)

  • 获取session

  • GetSession(name string) interface{}

  • this.GetSession(“username”)

  • 删除session

  • this.DelSession(name string)

  • 在过滤器中获取session

  • ctx.Input.Session(“user_name”)

  • 关于session的一些其他配置

  • 设置是否开启 Session

  • beego.BConfig.WebConfig.Session.SessionOn

  • 默认为false

  • 设置 Session 过期的时间

  • beego.BConfig.WebConfig.Session.SessionGCMaxLifetime

  • 默认值是 3600 秒

  • 设置 cookie 的过期时间

  • beego.BConfig.WebConfig.Session.SessionCookieLifeTime

  • 设置sessionid加密算法

  • beego.BConfig.WebConfig.Session.SessionHashFunc

  • 默认值为 sha1

  • 修改sessionkey

  • beego.BConfig.WebConfig.Session.SessionHashKey

  • 默认的 key 是 beegoserversessionkey,建议在使用的时候修改该参数

  • 设置 cookies 的名字

  • beego.BConfig.WebConfig.Session.SessionName

  • Session 默认是保存在用户的浏览器 cookies 里面的,默认名是 beegosessionID,配置文件对应的参数名是:sessionname。

五、model模块

====================================================================

5.1 orm的使用


5.1.1 mysql安装

  • 用户名和密码的配置

5.1.2 navicat安装

5.1.3 beego中使用

  • 安装:

  • go get github.com/astaxie/beego/orm

  • go get github.com/go-sql-driver/mysql

  • 连接数据库:

  • orm.RegisterDriver(“mysql”, orm.DRMySQL)

  • orm.RegisterDataBase(“default”, “mysql”, “用户名:密码@tcp(IP:端口号)/数据库?charset=utf8”, 30)

  • 参数一:数据库的别名,用来在 ORM 中切换数据库使用

  • 参数二:驱动名称

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-YgBRV767-1713315615034)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 30
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值