go
ssssort
时间和钱都很紧张。。。
展开
-
go windows 环境 设置 使用 linux 环境编译
在控制台输入如下命令:1. SET GOOS=linux2. SET GOARCH=amd643. go env 查看命令执行结果原创 2020-09-23 20:08:08 · 1143 阅读 · 0 评论 -
go install 无法自动下载包问题
go install 时遇到包 无法下载问题 需要 手动 go get查询资料发现 可以使用 go vendor 会很方便,具体如下:1. go mod init2. go mod vendor如果 提示: go: modules disabled by GO111MODULE=off; see 'go help modules'则 执行: set GO111MODULE=on然后再执行 :go mod vendor...原创 2020-09-23 20:05:39 · 2026 阅读 · 0 评论 -
go 学习 第三十一章 Go语言 gorm many2many 示例
gorm many to many// 仅实现了 级联新增,级联查询功能,// 未实现 级联删除 和级联更新。// 求大神指点。。。package mainimport ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql")type User struct { ...原创 2019-06-28 20:50:07 · 4263 阅读 · 0 评论 -
GO 语言 gin 第7篇 写入日志,绑定模型和验证
1. 写日志package mainimport ( "github.com/gin-gonic/gin" _ "github.com/jinzhu/gorm/dialects/mysql" "io" "os")//实现单例模式传递(可能理解的不对)var r *gin.Enginefunc main() { // 禁用控制台颜色,当你将日志写入 //文件时,不...原创 2019-07-04 10:16:26 · 1301 阅读 · 0 评论 -
GO 语言 gin 第6篇 router中使用中间件
package mainimport ( "github.com/gin-gonic/gin" _ "github.com/jinzhu/gorm/dialects/mysql")//实现单例模式传递(可能理解的不对)var r *gin.Enginefunc main() { //创建一个没有任何中间件的路由 r = gin.New() //全...原创 2019-07-03 18:32:45 · 2951 阅读 · 0 评论 -
GO 语言 gin 第5篇 数据如何在gin中流转
数据如何在gin中流转package mainimport "github.com/gin-gonic/gin"func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // ...转载 2019-07-03 17:53:24 · 886 阅读 · 0 评论 -
GO 语言 gin 第4篇 分层实现 路由分发
// 路由器 1 app routerpackage appimport ( "github.com/gin-gonic/gin")func Router(router *gin.RouterGroup) { cluster := router.Group("apps") { cluster.GET("/get",getCluster ) //cluster.POST...原创 2019-07-03 17:45:23 · 2632 阅读 · 0 评论 -
GO 语言 gin 第3篇 实现 单文件,多文件 上传
package mainimport ( "fmt" "github.com/gin-gonic/gin" _ "github.com/jinzhu/gorm/dialects/mysql" "log" "net/http")func main() { router := gin.Default() // 为 mutipart 表单 设置一个较低的内存限制(默认是 3...原创 2019-07-03 12:59:38 · 1548 阅读 · 0 评论 -
go 学习 第十五章 Go语言 切片
Go 语言 切片(slice)1. 切片是对数组的抽象。 数组的长度不可改变,但基于数组的切片可以改变,可以追加元素。2. 切片定义 a. 切片不需要说明长度, 可以声明一个未指定大小的数组来定义切片 var identifier []type b. 使用make()函数来创建切片 var slice1 []type = m...原创 2019-06-24 21:06:50 · 126 阅读 · 0 评论 -
go 学习 第十四章 Go语言 结构体
结构体类似于java中的entity/dto定义结构体 使用type struct 关键字。示例 type Books struct { title string author string book_id int }变量声明语法格式:variable_name := struct_name {value1...原创 2019-06-24 19:30:17 · 114 阅读 · 0 评论 -
go 学习 第二十八章 Go语言 gorm 使用limit , offset, count 实现分页
1. Limit Limit 指定要查询的最大记录数。 示例: 取出时间倒叙的最后5条记录db.Order("created_at desc").Limit(5).Find(&users)2. Offset Offset指定开始返回记录前要跳过的记录数。 ※ offset 需要配合limit 使用...原创 2019-06-27 18:18:19 · 26898 阅读 · 2 评论 -
go 学习 第二十七章 Go语言 gorm 模型定义
模型定义模型一般都是普通的 Golang 的结构体,Go 的基本数据类型,或者指针。sql.Scanner和driver.Valuer,同时也支持接口。例子:type User struct { gorm.Model Name string Age sql.NullInt64 Birthday *time.Time E...转载 2019-06-27 11:06:29 · 3260 阅读 · 0 评论 -
Go语言 gin 第2篇 get,post API
Gin使用 encoding/json作为默认的json包,但你可以在构建的时候通过tags去使用jsoniterAPI示例使用 GET,POST,PUT,PATCH,DELETE,OPTIONSget 示例package mainimport ( "github.com/gin-gonic/gin" _ "github.com/jinzhu/gorm/dialect...原创 2019-07-03 09:12:39 · 881 阅读 · 0 评论 -
go 学习 第二十九章 Go语言 gorm one to one 实现 CURD 增删该查操作
gorm one2one 实现 CURD 。其中删除没有实现级联删除还在探索中,望大神们指点。package mainimport ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql")type Place struct { ID int `gorm:primary_key`...原创 2019-06-28 16:54:00 · 777 阅读 · 0 评论 -
go 学习 第三十章 Go语言 gorm one to many 级联操作
ono to mang 只实现了 级联添加,级联查询。// 级联更新。只更新了主表的数据。附表中的数据新增进去了。。// 大神们求指点。。。。// 级联删除。只删除了主表中的数据,附表中没有删除。// 大神们求指点。。。。package mainimport ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/...原创 2019-06-28 19:09:23 · 2227 阅读 · 1 评论 -
go 设置 代理
国内运行 go 项目很多情况下会出现无法下载 所需 包, 编译各种报错。。这时需要我们设置代理,才可https://goproxy.io/步骤 1. file -setting2. go -》 go modules...原创 2019-07-01 11:30:02 · 5878 阅读 · 0 评论 -
GO 语言 gin 第15篇 使用自定义结构绑定表单数据
type StructA struct { FieldA string `form:"field_a"`}type StructB struct { NestedStruct StructA FieldB string `form:"field_b"`}type StructC struct { NestedStructPointer *StructA...原创 2019-07-05 19:03:11 · 1214 阅读 · 0 评论 -
GO 语言 gin 第14篇 使用Gin 运行多个服务
运行服务的返回类型为 :http.Handler 。gin.New(),gin.Default() 返回的就是此类型。使用&http.Server{....} 设置服务参数使用g.Go(func () error{ return server.ListenAndServe()}) 开启一个服务。package mainimport ( "github.com/Unknw...原创 2019-07-05 18:41:24 · 3592 阅读 · 0 评论 -
GO 语言 gin 第13篇 在中间件中使用协程 gorouetine
在一个中间件 或 处理器 中 启动一个新的协成时,不能使用它里面原始的 context , 只能使用它的只读副本 cc = c.Copy示例如下:package mainimport ( "github.com/gin-gonic/gin" _ "github.com/jinzhu/gorm/dialects/mysql" "log" "time")func m...原创 2019-07-05 16:43:29 · 757 阅读 · 0 评论 -
GO 语言 gin 第12篇 自定义中间件,使用BasicAuth中间件
Basic Authentication是一种HTTP访问控制方式,用于限制对网站资源的访问。这种方式不需要Cookie和Session,只需要客户端发起请求的时候,在头部Header中提交用户名和密码就可以。如果没有附加,会弹出一个对话框,要求输入用户名和密码。这种方式实施起来非常简单,适合路由器之类小型系统。但是它不提供信息加密措施,通常都是以明文或者base64编码传输。在网络嗅探中,B...原创 2019-07-05 15:16:10 · 2678 阅读 · 0 评论 -
go 使用 fresh 实现热重启
1. cmd 打开命令窗口,输入一下命令:go get github.com/pilu/fresh 2. 跳转到要运行的项目的 根目录 ,运行 fresh 命令 。 fresh 将会自动运行项目的 main.go 热加载大功告成。fresh 的更多设置,请参考:https://github.com/gravityblast/fr...原创 2019-07-05 11:29:28 · 10526 阅读 · 0 评论 -
GO 语言 gin 第11篇 重定向
go 中 发送重定向非常容易,同时支持 内部和外部地址。 外部重定向使用 : content.Redirect 路由重定向使用: a. 通过 content.Request.URL.Path 重新设置路由 b. 通过 router.HandleContent(content) 重调1. 外部重定向package mainim...原创 2019-07-04 17:53:31 · 3610 阅读 · 0 评论 -
GO 语言 gin 第10篇 静态文件服务, 从reader 提供数据
1. 静态文件服务 如何使用还不太理解,官方给的示例如下 func main() { router := gin.Default() router.Static("/assets", "./assets") router.StaticFS("/more_static", http.Dir("my_file_system")) router...原创 2019-07-04 17:25:29 · 3740 阅读 · 0 评论 -
GO 语言 gin 第9篇 SecureJSON , JSONP, AsciiJSON
1. SecureJSON SecureJSON 用来防止json劫持。 如果给定的结构体是数值型,默认预置“while(1)” 到response body ( 不知道啥意思,设置成数值型后 并没有预制 while("1")) package mainimport ( "github.com/gin-gonic/gin" _ "githu...原创 2019-07-04 16:48:14 · 2130 阅读 · 0 评论 -
GO 语言 gin 第8篇 返回XML, JSON 和 YAML
gin 提供 。 json,xml, yaml 的返回机制gin.H 是一个 map[string]interface{}的快捷方式代码示例如下:package mainimport ( "github.com/gin-gonic/gin" _ "github.com/jinzhu/gorm/dialects/mysql" "net/http")type Perso...原创 2019-07-04 15:35:07 · 3928 阅读 · 0 评论 -
go 学习 第十三章 Go语言 指针
1. 定义变量是一种使用方便的占位符,用于引用计算机内存地址。Go 语言的取地址符是&,用于引用计算机内存地址。 指针变量指向了一个值的 内存地址。 类似于变量和 常量, 在使用指针前 需要先声明 指针。 声明: var name *type2. 指针 使用流程 a. 定义指针变量 b. 为指针变量赋值 c. 访问指...原创 2019-06-24 17:02:56 · 127 阅读 · 0 评论 -
go 学习 第十二章 Go语言 数组
数组 是 具有相同唯一类型 的 一组 已编号且 长度固定的 数据项 序列。数组索引从 0 开始 ,第一个元素的索引 为 0 以此类推。数组声明 语法: var name[size] type var balance[10] int1. 初始化数组var balance = [5] float32{1000.0,2.0.3.2.35.3.100.3}初...原创 2019-06-24 15:45:00 · 127 阅读 · 0 评论 -
go 学习 第十七章 Go语言 范围(Range)
Go 语言中 range 关键字 用于 for 循环中迭代array,slice,channel ,map 等元素。在数组和切片中它返回元素的索引和索引对应的值。在集合中返回key-value 对应的 key, value 值。range 可以用来枚举 unicode 字符串 。第一个参数是字符的索引,第二个字符是Unicode的值本身。示例:package mainimp...原创 2019-06-25 10:53:32 · 139 阅读 · 0 评论 -
go 学习 第十六章 Go语言 Map (集合)
Map 是一种无序的键值对集合,Map 最重要的一点是通过key快速检索数据,key类似于索引,指向数据的值。Map 是一种集合,所以我们可以像迭代数组一样迭代它。不过,Map是无序的。我们无法决定它的返回顺序。 这是因为,Map是使用hash表来实现的。1. 定义Map a. 使用内建函数make map_name := make(map[...原创 2019-06-25 10:09:02 · 172 阅读 · 0 评论 -
go 学习 第八章 Go语言判断语句
1. if 语句 示例 if a>20 { fmt.Println("a > 20") }2. if else if 布尔表达式 { }else{ }3. 嵌套if4. switch switch 从上到下逐一执行,直到匹配为止。case 最后自带break...原创 2019-06-20 17:07:28 · 267 阅读 · 0 评论 -
go 学习 第七章 Go语言运算符
Go 语言运算符 Go语言中运算符有: 算术运算符, 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符1. 算术运算符 + 相加 - 相减 * 相乘 ...原创 2019-06-20 11:15:34 · 103 阅读 · 0 评论 -
go 学习 第六章 Go语言常量
1. 常量是 在程序中不能被修改的量 常量只能是 数字,布尔,字符串 常量关键字 const 显示类型定义:const a string = “abc” 阴式类型定义: const a = “abc” 多个相同类型的声明可以简写为: const name1, name2, name3 = value1, value2, v...原创 2019-06-20 10:57:32 · 119 阅读 · 0 评论 -
go 学习 第五章 Go语言变量
变量来源于数学,是计算机语言中能存储计算结果 或 能表示值抽象概念。变量可以通过变量名访问。变量声明一般使用的是 var 关键字var identifier type可以一次声明多个变量var identifier1, identifier2 , ... type1. 变量声明 a. 指定变量类型,如果没有初始化,则变量默认为零值。 如:...原创 2019-06-19 17:25:27 · 168 阅读 · 0 评论 -
go 学习 第四篇 Go语言数据类型
Go 语言 数据类型 数据类型的出现是为了,把数据分成所需内存大小不同的数据,编程时需要用大数据的时候才申请大内存,就可以充分利用内存, 1. 布尔类型 布尔类型的值 只可以是 常量 true 或者 false 。 例: var b bool = true 2. 数据类型 整性 int 和 浮点型 float32,float64, Go语言支...原创 2019-06-19 15:07:46 · 112 阅读 · 0 评论 -
go 学习 第三篇 基础语法
1. 行分隔符 在Go 语言中,一行代表一个语句的结束,每个语句不需要像C家族,java一样,以;结尾。 如果想在同一行写多个语句则用;分开。2. 注释 同java一样 单行// ,多行/* 。。。*/3. 标识符 变量命名 必须为 字母,数字,下划线 ,第一个字符必须是 字母 或 下划线,而不能是数字。4. 字符串链接 使用 + 例如...原创 2019-06-19 14:52:49 · 162 阅读 · 0 评论 -
go 学习 第二篇 hello world !
新建 hello.go 文件代码如下:package mainimport "fmt"func main() { fmt.Println("Hello World!)}执行go 语言的代码可以使用go run 命令go run hello.goHello, World!还可以用 go build 命令来生成 二进制文件:go build hel...原创 2019-06-19 10:42:25 · 101 阅读 · 0 评论 -
go 学习 第一篇 go 语言特性
Go 是一个开源的编程语言,它能让构造简单,可靠且高效的软件变得容易。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。Go语言的...原创 2019-06-19 10:30:02 · 144 阅读 · 0 评论 -
import "aaa" is a program, not an importable package 解决办法
最近学go 想从main 类里面掉用其他类的方法,出现了import "aaa" is a program, not an importable package 标题中的错误。1. 主要原因是 go 和Java不一样,import 引入的必须是包名而不是类名。package 名必须与所在包名一直(copy害死人)。2. public 方法首字母必须是大写,否则会出现 undifined的错误。...原创 2018-03-01 15:09:38 · 11627 阅读 · 0 评论 -
go 学习 第十八章 Go语言 递归函数
递归 ,就是在运行过程中 调用自己。Go 语言支持递归。但在使用递归时需要设置退出条件,否则递归将陷入无线循环。递归对于解决数学上的问题,非常有意义。如计算阶乘,生成斐波那契数列等。语法格式如下: func recursion () { recursion() }funtion main(){ recursion()}示...原创 2019-06-25 11:18:51 · 229 阅读 · 0 评论 -
go 学习 第九章 Go语言循环语句
1. for 循环 a. 和C语言一样用; 分割。 b. for循环的 的 range 格式可以对 map ,数组,slice ,字符串等进行迭代循环。格式如下 for key,value := range oldMap { newMap[key] = value } range 示例:// ...原创 2019-06-21 14:41:23 · 172 阅读 · 0 评论