go语言学习
Batac_
中国北方小镇的田园村落
展开
-
go-正则匹配身份证号码
var ( //身份证号码 //rePersonCode = `<span>身份号码:[\s]?(([1-6]\d{5})(\d{4})(\d{2})(\d{2})(\d{4}))</span>` //rePersonCode = `<span>身份号码:[\s]?(([1-6]\d{5})((19\d{2})|(20\d{2}))(\d{2})(\d{2})(\d{4}))</span>` rePersonCode = `<span>.原创 2020-11-21 21:44:10 · 1071 阅读 · 0 评论 -
go-正则匹配超链接
\s 表示:匹配任意空白字符,等价于[ \t\n\r\f]\S 表示:匹配任意非空字符var ( //超链接 reSuperUrl = `<a[\s\S]+?href="(http[\s\S]+?)"` //以<a开头 [\s\S] \s匹配任意空白字符 \S匹配任意非空字符 +一次到多次 ?当匹配到后边的href的时候停止前面的匹配 //()分组 以http开头 匹配非空字符或者空字符任意一种 +一次或者多次 ?匹配到后边的"则停止匹配,...原创 2020-11-21 21:01:05 · 1231 阅读 · 0 评论 -
go-正则匹配邮箱
\w 表示字母字符var ( //reEmail = `[1-9]\d{4,}@qq.com` //邮箱 //reEmail = `\w+@\w+.com` //邮箱 reEmail = `[\w\.]+@\w+\.[a-z]{2,3}(\.[a-z]{2,3})?` //邮箱 /** [\w\.]+ 表示字母字符或者.其中一个出现 +1到多次 [a-z]{2,3} 表示a-z任意其中一个字符 出现2到3次 (\.[a-z]{2,3}原创 2020-11-21 17:44:26 · 2072 阅读 · 0 评论 -
go-正则匹配电话号码
+ 表示1个到多个* 表示0个到多个? 表示0个到1个{m, n} 表示m到n次{0, n} 表示0次到n次[a-z] 表示a到z中任意一个[abc] 表示abc中任意一个[^abc] 表示出了abc的其他任意字符a|b 表示a或者b`1[3456789]\d{9}`第一位: 1开头;第二位: [3456789] 表示3456789中任意一个;之后的表示: \d数字部分 {9} 共9位package mainimport ( "fmt"...原创 2020-11-21 17:19:49 · 1123 阅读 · 0 评论 -
gin框架学习-返回信息的统一封装
gin基础:1.环境: go get github.com/gin-gonic/gin 构建HTTP服务原创 2020-11-11 17:16:12 · 2426 阅读 · 1 评论 -
gin框架学习-session
session用来记录当前登录状态:导入包文件:go get github.com/gin-contrib/sessionspackage toolimport ( "fmt" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/redis" "github.com/gin-gonic/gin")//初始化sessonfunc InitSession(engine *gin.Engine)原创 2020-11-11 17:01:12 · 1023 阅读 · 0 评论 -
gin框架学习-controller
controller负责接收package controllerimport ( "Gin_demo/CloudRestaurant/model" "Gin_demo/CloudRestaurant/param" service "Gin_demo/CloudRestaurant/service" "Gin_demo/CloudRestaurant/tool" "encoding/json" "fmt" "github.com/gin-gonic/gin" "os" "strco原创 2020-11-11 16:59:04 · 1843 阅读 · 0 评论 -
gin框架学习-service
service负责复杂的业务逻辑处理package serviceimport ( "Gin_demo/CloudRestaurant/dao" "Gin_demo/CloudRestaurant/model" "Gin_demo/CloudRestaurant/param" "Gin_demo/CloudRestaurant/tool" "fmt" "math/rand" "time")type MemberService struct {}func (ms *Mem原创 2020-11-11 16:56:41 · 664 阅读 · 0 评论 -
gin框架学习-dao
dao层负责与数据库交流:package daoimport ( "Gin_demo/CloudRestaurant/model" "Gin_demo/CloudRestaurant/tool" "fmt")//定义用户dao层 继承Orm 可以拥有orm的很多基本方法type MemberDao struct { *tool.Orm}//更新用户头像func (md *MemberDao)UploadAvator(userId int64, fileName string原创 2020-11-11 16:53:53 · 720 阅读 · 0 评论 -
gin框架学习-redis
导入包文件:go get github.com/gomodule/redigo/redis创建redis处理文件RedisStore:package toolimport ( "fmt" "github.com/gomodule/redigo/redis" "github.com/mojocn/base64Captcha" "log")type RedisStore struct { client redis.Conn}//全局变量, 用来保存redis句柄var原创 2020-11-11 16:50:40 · 913 阅读 · 0 评论 -
gin框架学习-orm
使用orm可以款速的建表等操作下载包文件go get github.com/go-xorm/xorm创建全局orm句柄import ( "Gin_demo/CloudRestaurant/model" "fmt" _ "github.com/go-sql-driver/mysql" "github.com/go-xorm/xorm")//全局orm句柄 OrmEngine方法中赋值 OrmEngine在main方法中初始化var DbEngine * Ormtype原创 2020-11-11 16:44:30 · 1102 阅读 · 0 评论 -
gin框架学习-配置文件(config)
数据库、redis、fastDFS等处理已配置文件的形式可配置app.json:{ "app_name": "Batac", "app_model": "debug", "app_host": "localhost", "app_port": "8080", "sms": { "sign_name": "云裳", "template_code": "YS_123456", "app_key": "", "app_secret": "", "r原创 2020-11-11 16:36:39 · 4268 阅读 · 1 评论 -
gin框架学习-中间件
所有网络请求,都可以使用中间件进行增强处理, 过滤处理等跨域处理://跨域访问: cross origin resource sharefunc Cors()gin.HandlerFunc { return func (context *gin.Context){ method := context.Request.Method origin := context.Request.Header.Get("Origin") var headerKeys []string for原创 2020-11-11 16:30:37 · 253 阅读 · 0 评论 -
gin框架学习-main
1.安装gin包go get -u github.com/gin-gonic/gin项目组织目录:main: 项目主入口, 初始化gin和数据库等, 加载配置文件 controller: 负责路由过来的请求内部业务处理 service: 负责具体业务, 减轻controller负荷 dao: 负责对接数据库表的增删改查 (中间使用xorm对接) model: 对应数据实体 param: 返回数据实体 config: 项目所需配置,(mysql, redis, fastDFS等配原创 2020-11-11 16:27:16 · 511 阅读 · 0 评论 -
数据库事务处理(go,mysql)
//数据库连接池var db *sql.DB//初始化数据库func initDB() (err error){ fmt.Println("学习数据库") dsn := "usename:password@tcp(127.0.0.1:3306)/dataname" db, err = sql.Open("mysql",dsn) if err!=nil { fmt.Println("打开数据库失败 err:",err,".dsn:",dsn) return } err = db.P.原创 2020-11-02 15:04:48 · 472 阅读 · 0 评论 -
信号量(sync.WaitGroup)
定义信号量变量:var wg sync.WaitGoup添加任务:wg.Add(1)任务完成://任务完成, 调用这个方法, 会消减信号量wg.Done()信号等待://等信号量为0的时候, 则不再等待wg.Wait()原创 2020-10-28 15:14:32 · 230 阅读 · 0 评论 -
chan练习
使用goroutine和channel实现一个计算int64随机数各位数和的程序:1. 开启一个goroutine循环生成int64类型的随机数, 发送到jobChan;2. 开启24个goroutine从jobChan中取出随机数计算各位数的和, 将结果发送到resultChan;3.主goroutine从resultChan取出结果打印终端输出;第一步:创建两个通道jobChan与resultChan:type job struct { value int64}type re原创 2020-10-28 14:34:03 · 204 阅读 · 0 评论 -
func与defer
说明:Go语言中函数的return不是原子操作, 在底层分为两步来执行;第一步: 返回值赋值第二步: 真正的return返回函数中如果存在defer, 那么defer执行的时机是在第一步和第二步之间;例子1:func f1() int { x := 5 defer func(){ x++ }() return x}//return://第一步: 将x赋值给匿名返回变量ret//进行defer操作, 修改x的值, x不是真正的返回原创 2020-10-21 18:14:08 · 787 阅读 · 0 评论 -
const学习
const用来声明常量, 定以后不可修改;可以声明全局常量, 也可以声明局部常量;const pi = 3.1415const e = 2.7182可以批量声明多个常量: 如果有一个常量没有赋值, 则和上边的常量赋值一样const( n1 = 100 n2 n3)输出:n1 = 100 n2 = 100 n3 = 100iota:在常量中使用, iota在遇到const时会被重置为0,const中每新增一行, iota计数一次:const( a1..原创 2020-10-20 09:55:59 · 236 阅读 · 0 评论