03.Beego框架快速入门

[TOC]前言本篇通过一个简单的查询示例,演示整个Beego框架的使用。代码编辑工具:Goland需求连接MySQL数据库,通过GET请求,传入id值查询出对应学生信息一、控制器逻辑在controllers目录下创建GoDemoController.go文件package controllers import ( "github.com/astaxie/beego" "go_project/models" ) //定义一个控制器结构体 //一般一个模块定义一个控制器 type GoDemoController struct { ...

GO 2022-07-30 AM 1697℃ 0条

02.Beego框架安装详解

[TOC]前言安装Go SDK(选择1.13及以上版本)下载地址:https://golang.google.cn/dl/一直下一步,修改安装路径即可。配置代理windows系统中在终端执行如下命令:go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct检查配置是否成功go env本人使用的是windows 11系统,肯定支持windows 10系统一、安装Beego1.1 安装命令beego 的安装是典型的 Go 安装包的形式go get github.com/astaxie/beego1.2 常见问题g...

GO 2022-07-28 PM 2255℃ 0条

01.Beego框架介绍

一、Beego简介Beego 是一个快速开发 Go 应用的 HTTP 框架,它可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。该框架采用模块封装,使用简单,容易学习。方便技术开发者快速学习并进行实际开发。对程序员来说,beego掌握起来非常简单,只需要关注业务逻辑实现即可,框架自动为项目需求提供不同的模块功能。Beego官网:https://beego.vip/Github地址...

GO 2022-07-27 AM 1993℃ 0条

30.Golang之错误和异常处理

[TOC]前言Go语言没有类似 Java 或 .NET 中的异常处理机制,虽然可以使用 defer、panic、recover 模拟,但官方并不主张这样做,Go语言的设计者认为其他语言的异常机制已被过度使用,上层逻辑需要为函数发生的异常付出太多的资源,同时,如果函数使用者觉得错误处理很麻烦而忽略错误,那么程序将在不可预知的时刻崩溃。Go语言希望开发者将错误处理视为正常开发必须实现的环节,正确地处理每一个可能发生错误的函数,同时,Go语言使用返回值返回错误的机制,也能大幅降低编译器、运行时处理错误的复杂度,让开发者真正地掌握错误的处理。一、错误和异常错误指的是可能出现问题的地方出现了问题。...

GO 2022-07-25 PM 1269℃ 0条

29.Golang写入文件

[TOC]前言一、写入文件操作1.1 os.OpenFile()函数语法func OpenFile(name string, flag int, perm uint32) (file *File, err Error)参数name:要文件路径+文件名;flag:打开文件的模式,只读、读写等;perm:文件权限,一个八进制数。r(读)04,W(写)02,x(执行)01。os.OpenFile()函数能够以指定模式打开文件,从而实现文件写入相关功能。模式flag种类模式含义os.O_WRONLY只写os.O_CREATE如果不存在文件,创建文件os.O_RDONLY只读os.O_RDWR可读...

GO 2022-07-24 PM 3146℃ 0条

28.Golang读取文件

[TOC]前言一、概念文件是数据源(保存数据的地方)的一种,文件最主要的作用就是保存数据。文件在程序中是以流的形式来操作的。输入流和输出流流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存)的路径输出流:数据从程序(内存)到数据源(文件)的路径二、读取文件操作2.1 打开和关闭文件打开文件func Open(filename string) (file *File, err error)Open打开一个文件用于读取。如果操作成功,返回的文件对象的方法可用于读取数据;对应的文件描述符具有O_RDONLY模式。如果出错,错误底层类型是*PathErr...

GO 2022-07-24 PM 1718℃ 0条

27.Golang之反射三定律

[TOC]前言一、概述一个接口变量,实际上都是由一 pair 对(type 和 data)组合而成,pair 对中记录着实际变量的值和类型。也就是说在真实世界(反射前环境)里,type 和 value 是合并在一起组成接口变量的。而在反射的世界(反射后的环境)里,type 和 data 却是分开的,他们分别由 reflect.Type 和 reflect.Value 来表现。二、反射第一定律反射可以将“接口类型变量”转换为“反射类型对象”。注:这里反射类型指 reflect.Type 和 reflect.Value。通过之前我们讲过的 reflect.TypeOf() 方法和 refle...

GO 2022-07-22 AM 1057℃ 0条

26.Golang之反射介绍

[TOC]前言反射(reflection)是在 Java 出现后迅速流行起来的一种概念,通过反射可以获取丰富的类型信息,并可以利用这些类型信息做非常灵活的工作。一、概述反射:是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。Go程序在运行期使用reflect包访问程序的反射信息。使用反射注意...

GO 2022-07-22 AM 1258℃ 0条

25.Golang并发安全和锁

[TOC]前言一、概述有时候在Go代码中可能会存在多个goroutine同时操作一个资源(临界区),这种情况会发生竞态问题(数据竞态)。这就好比现实生活中十字路口被各个方向的汽车竞争,还有火车上的卫生间被车厢里的人竞争。数据竞争的示例import ( "fmt" "sync" ) var ( x int64 sw sync.WaitGroup // 等待组 ) // add 对全局变量x执行5000次加1操作 func add() { for i := 0; i < 5000; i++ { ...

GO 2022-07-15 PM 1607℃ 0条

24.Golang之select

[TOC]前言一、概述select 是 Golang 中的一个控制结构,语法上类似于switch 语句,只不过select是用于 goroutine 间通信的 ,每个 case 必须是一个通信操作,要么是发送要么是接收,select 会随机执行一个可运行的 case。如果没有 case 可运行,goroutine 将阻塞,直到有 case 可运行。二、基本语法语法//select基本用法 select { case <- chan1: // 如果chan1成功读到数据,则进行该case处理语句 case chan2 <- 1: // 如果成功向chan2写入数据,则进行该ca...

GO 2022-07-14 PM 1428℃ 0条