Go
go
夏已微凉、
这个作者很懒,什么都没留下…
展开
-
Mysql 查询数据库中哪个表的字段个数最多
截图SQL原创 2022-06-08 21:37:21 · 496 阅读 · 0 评论 -
Golang 参数传递本质
一、结论二、为什么三、代码说明一、结论Golang 参数传递,全部是传值。二、为什么对于map,slice这样的类型,作为参数传递,明明是传值,但是在函数中修改值后,在原函数仍然能访问到修改后的值。如果你有C++基础,那么对于slice的理解,很容易就懂了,Slice的内部,就是这么个东东.template<typename T>class Slice {public: ~Slice(); Slice(size_t len , size_t cap) Slice(.转载 2021-12-04 14:42:37 · 229 阅读 · 0 评论 -
Golang1.71.3下载以及安装(Linux Mac Windows)
一、前言二、下载三、安装1、Linux2、Mac3、Windows一、前言原文地址 GO Download and install用 百度翻译 翻译的,凑合着看吧。二、下载【Linux下载】链接:https://pan.baidu.com/s/1vo8umsAix99Jc9eGQE2MJQ 提取码:f870【Mac下载】链接:https://pan.baidu.com/s/1kIxyWcPiUXZ-8PiipulnkA 提取码:poez【Windows下载】链接:https://p.原创 2021-11-20 11:48:22 · 2117 阅读 · 0 评论 -
golang 判断map的键key是否存在
一、代码二、打印一、代码func main() { mapStr := map[string]interface{}{"name": "姓名", "days": 99, "amount": 12.34} keys := []string{"name", "days", "amount", "month"} for _, k := range keys { bol, val := mapKeyExist(mapStr, k) if bol { fmt.Printf("键 [ %s .原创 2021-08-14 15:52:37 · 2316 阅读 · 0 评论 -
Go 遍历map时的key随机化问题及解决方法
一、前言二、解决三、示例代码四、代码打印五、参考地址一、前言我们有的时候需要循环map,然后append数据,并且保证数据结构是有序的,但是我发现得出来数据的值错位了。刚开始以为是append追加导致的,后来才发现是由于map循环无序导致的。二、解决方法一:自定义字段排序。方法二:根据sort.Strings()函数排序。三、示例代码func main() { //设置map mapStr := map[string]string{"title1": "一", "title2":.原创 2021-08-14 13:51:56 · 863 阅读 · 0 评论 -
Golang sha256 加密,PHP hash_hmac(‘sha256‘, $string, $key)加密,Js CryptoJS.HmacSHA256(string, key) 加密
一、go代码二、PHP代码三、Js代码四、结果五、相关地址一、go代码package mainimport ( "crypto/hmac" "crypto/sha256" "encoding/hex" "fmt")func main() { s := []byte("hello") key := []byte("123456") m := hmac.New(sha256.New, key ) m.Write( s ) signature := hex.EncodeToStr.原创 2021-08-05 17:49:03 · 1283 阅读 · 0 评论 -
golang gin解决跨域:编写一个全局中间件
一、编写中间件二、使用中间件一、编写中间件package middlewareimport ( "github.com/gin-gonic/gin" "net/http")// 处理跨域请求,支持options访问func Cors() gin.HandlerFunc { return func(c *gin.Context) { method := c.Request.Method c.Header("Access-Control-Allow-Origin", "*") .转载 2021-08-05 16:50:05 · 947 阅读 · 0 评论 -
golang for循环时修改自身的值
一、尝试 v.Name 直接修改1、代码2、打印3、结论二、println() 函数查看内存地址是否一致1、代码2、打印3、结论三、users[k].Name 修改1、代码2、打印3、结论一、尝试 v.Name 直接修改1、代码package mainimport "fmt"type User struct { Name string}func main() { users := []User{{Name: "姓名1"}, {Name: "姓名2"}, {Name: "姓名3"}}.原创 2021-02-22 10:17:13 · 1574 阅读 · 0 评论 -
golang 内置函数append使用方式
看一下内置函数append在buildin.go中的注释就知道了// The append built-in function appends elements to the end of a slice. If// it has sufficient capacity, the destination is resliced to accommodate the// new elements. If it does not, a new underlying array will be allo.原创 2021-02-19 14:36:12 · 880 阅读 · 0 评论 -
golang清空切片
一、代码二、结果一、代码package mainimport ( "fmt")func main() { //方法一: ids := []int{1, 2, 3, 4, 5} fmt.Println(ids) ids = ids[0:0] fmt.Println(ids) //方法二: ids1 := []int{1, 2, 3, 4, 5, 6} fmt.Println(ids1) ids1 = []int{} fmt.Println(ids1) ids2 :=.原创 2021-02-19 14:28:30 · 4648 阅读 · 0 评论 -
proto3文件定义Demo-用户表单条、多条、所有、编辑
一、用户表SQL二、proto3文件定义如下:三、proto文件字段对应的Json数据格式1、InfoRequest2、InfoResponse3、ListRequest4、ListResponse5、ListAllResponse6、EditRequest7、EditResponse一、用户表SQL用户表sql如下:CREATE TABLE `user` ( `id` int(11) NOT NULL COMMENT '主键ID', `name` varchar(100) DEFAUL.原创 2021-02-07 11:50:07 · 1509 阅读 · 3 评论 -
golang panic: assignment to entry in nil map(map赋值前要先初始化 - map的初始化及使用 )
一、问题重现1、代码package mainimport "fmt"func main() { //test1() test2()}func test1() { var idToName map[int64]string idToName[1] = "张三" fmt.Print(idToName)}func test2() { var userInfo map[int64]map[string]string userInfo[1]["name"] = "张三"原创 2021-02-02 16:55:53 · 10656 阅读 · 0 评论 -
golang 微信小程序获取二维码scene参数报错 invalid scene rid: f05f96ab-5382f139-14b13d2f
一、场景二、分析1、百度翻译2、执行以下代码3、打印4、分析三、封装post方法一、场景调用 微信小程序码生成接口 报错:invalid scene rid: f05f96ab-5382f139-14b13d2f二、分析1、百度翻译百度翻译一下为:无效的场景rid,可能是我们的scene参数的值错误2、执行以下代码package mainimport ( "bytes" "encoding/json" "fmt" "log")func main() { data .原创 2021-01-29 17:07:40 · 2672 阅读 · 0 评论 -
go hash 密码:加密、校验
一、代码二、打印一、代码package mainimport ( "fmt" "golang.org/x/crypto/bcrypt")func main() { //密码加密 hash, err := hashEncode("123456") if err != nil { fmt.Println(err) } fmt.Println("hash过的密码:", hash) //密码校验 sourcePwd := "123456" pwdMatch := comp.原创 2021-01-16 17:26:22 · 1110 阅读 · 2 评论 -
golang 时间戳和时间互转
一、需知二、代码三、运行截图四、其他一、需知日期格式化示意图 以PHP为例语言年月日时分秒分隔符PHPYmdHis自定义Golang20060102150405自定义即 PHP 中的 Y-m-d H:i:s 等价于 Golang 中的 2006-01-02 15:04:05二、代码package mainimport ( "fmt" "time")func main() { //1、时间戳转时间 n.原创 2021-01-09 16:59:46 · 7315 阅读 · 1 评论 -
golang 获取当前年月日
一、需知二、代码三、执行结果1、执行结果2、断点截图一、需知日期格式化示意图 以PHP为例语言年月日时分秒分隔符PHPYmdHis自定义Golang20060102150405自定义即 PHP 中的 Y-m-d H:i:s 等价于 Golang 中的 2006-01-02 15:04:05二、代码package mainimport ( "fmt" "time")func main() { // 1、.原创 2021-01-09 14:08:26 · 9388 阅读 · 0 评论 -
golang 猜数字小游戏
一、场景二、分析三、代码四、运行结果五、延伸一、场景随机生成 2 个数,在这 2 个数中随机一个结果数字。然后我们键盘录入,猜测这个结果数字是几。二、分析需要完成这些操作,我们需要知道的知识点:1、随机数获取函数2、键盘录入函数3、打印(格式化打印)函数三、代码package mainimport ( "fmt" "math/rand" "time")func main() { //结果数值的取值范围 guessArray := [2][2]int64{.原创 2020-12-30 09:54:25 · 2435 阅读 · 7 评论 -
golang:cannot unmarshal number into Go value of type []json.RawMessage
一、场景二、proto文件内容三、解决一、场景Micro Web 接口请求,传参内容如下{"ids": 1}报错:cannot unmarshal number into Go value of type []json.RawMessage翻译:无法将数字解编为类型为[]的Go值json.RawMessage分析:不能把数字解析为[],应该是要传数组[1],而不是传数字1二、proto文件内容message GoodsRequest { int64 id = 1; .原创 2020-12-28 11:39:03 · 6543 阅读 · 5 评论 -
golang 提示:can‘t resolve file
【场景】go 引入文件提示 can't resolve file翻译: 无法解析文件 【原因】引入go文件的时候,文件路径写错了原创 2020-12-25 17:21:41 · 2974 阅读 · 0 评论 -
Go Token获取异常:token contains an invalid number of segments
一、报错信息二、代码一、报错信息token contains an invalid number of segments百度翻译:令牌包含无效的段数二、代码哈哈,原来不仔细,处理Token的时候截取错了func TokenCheck() gin.HandlerFunc { return func(c *gin.Context) { token := c.GetHeader("Authorization") //先在header中查找一下 if token == "" { .原创 2020-12-16 16:23:08 · 5794 阅读 · 0 评论 -
go-micro服务报错:wsasend: An existing connection was forcibly closed by the remote host
一、前言二、原因一、前言详情报错如下:readfrom tcp 192.168.1.1:1->192.168.1.1:2: write tcp 192.168.1.1:1->192.168.1.1:2: wsasend: An existing connection was forcibly closed by the remote host二、原因原来是我的miro-web版本太低了,还是v1版本的升级到最新版本即可go get github.com/micro/micro/.原创 2020-11-27 17:25:45 · 4548 阅读 · 0 评论 -
goLang断言简单使用
@TOC一、前言go作为一门强类型语言,对数据类型有着严格的区分。当我们尝试封装一个方法时,有时候返回的都是interface{}类型。这时,就要对interface类型进行断言操作了二、代码package mainimport "fmt"func main() { data := getData() //断言string类型的name if name, ok := data["name"].(string); ok { //断言data["name"]的值[张三]为string原创 2020-11-26 16:54:29 · 2111 阅读 · 2 评论 -
微服务之Go-Micro(八)基于Gin框架的Http网关
一、背景二、需求描述三、构建proto文件四、网关五、微服务server端一、背景在单体应用时代,客户端向后端服务器发起请求来获取数据。负载均衡器将请求路由给后端的集群服务的某一个,然后后端服务器程序会从DB获取数据返回给客户端。微服务架构下,单体应用被切割成多个微服务,如果将多个微服务直接对外暴露,肯定会出现诸多问题客户端的请求报文和微服务暴露的API不匹配,协议可能都不一样,有的是二进制的rpc,也可能使用某种消息传递协议微服务难以重构,为了满足需求合并或者重构服务势必导致开发成本因此,微.转载 2020-11-25 11:46:34 · 3009 阅读 · 0 评论 -
Go实现PHP常用方法
一、前言二、代码一、前言作为一个phper,觉得php用起来比go简单一些(go作为强类型语言,太严谨了,哈哈),但是每门语言都有自己的特色我就想go应该也能实现php的方法吧,网上找了一下,还真有~二、代码https://github.com/syyongx/php2go/blob/master/php.go// php2go functionspackage php2goimport ( "archive/zip" "bytes" "crypto/md5" "cry.原创 2020-11-19 09:21:28 · 2091 阅读 · 1 评论 -
Golang中interface类型转string类型
【代码】// Strval 获取变量的字符串值// 浮点型 3.0将会转换成字符串3, "3"// 非数值或字符类型的变量将会被转换成JSON格式字符串func Strval(value interface{}) string { var key string if value == nil { return key } switch value.(type) { case float64: ft := value.(float64) key = strconv.Form..转载 2020-11-18 17:14:34 · 6675 阅读 · 0 评论 -
golang 图片处理,剪切,base64数据转换,文件存储
一、需知二、代码1、base64 -> file2、base64 -> buffer3、buffer-> ImageBuff(图片裁剪,代码接上面)4、img -> file(代码接上面)5、img -> base64(代码接上面)6、imgFile -> base647、总结三、使用一、需知本文主要介绍:图片文件的读写。图片在go缓存中如何与base64互相转换图片裁剪本文中,为了方便查看,去掉所有错误判断二、代码1、bas.转载 2020-11-18 17:10:26 · 1479 阅读 · 0 评论 -
go处理get、post请求返回的body数据
一、前言二、内容1、byte转map2、其他情况一、前言接上篇:go对get、post请求封装由以上内容可知,我们调用接口之后返回的是一个[]byte数据二、内容1、byte转map把 []byte转为map//返回Post接口的提示信息func getResponseMsg() (string, error) { url := "http://test.test/test" data := make(map[string]interface{}) data["param1.原创 2020-11-18 13:34:16 · 4785 阅读 · 0 评论 -
go对get、post请求封装
一、参考1、Get请求封装2、Post请求封装二、按需调整1、GET请求2、POST请求三、其他一、参考参考地址:go对get、post请求封装1、Get请求封装//Get http get methodfunc Get(url string, params map[string]string, headers map[string]string) (*http.Response, error) { //new request req, err := http.NewRequest("G.原创 2020-11-18 11:34:56 · 1871 阅读 · 0 评论 -
结构体转map[string]interface{}的若干方法
一、前言二、结构体转map[string]interface{}1、JSON序列化方式2、反射3、第三方库structs三、嵌套结构体转map[string]interface{}1、前言2、第三方库structs3、使用反射转成单层map一、前言原文地址:结构体转map[string]interface{}的若干方法本文介绍了Go语言中将结构体转成map[string]interface{}时你需要了解的“坑”,也有你需要知道的若干方法。我们在Go语言中通常使用结构体来保存我们的数据,例如要存储.转载 2020-09-22 16:35:33 · 2360 阅读 · 0 评论 -
go.mod 文件中的 //indirect
一、前言二、间接依赖出现情况 1 :直接依赖未启用 Go module三、间接依赖出现情况 2 :直接依赖go.mod 文件中缺失部分依赖(不完整)四、总结1、为什么要记录间接依赖2、如何处理间接依赖3、如何查找间接依赖来源一、前言在使用 Go module 过程中,随着引入的依赖增多,也许你会发现go.mod文件中部分依赖包后面会出现一个 // indirect的标识。这个标识总是出现在 require 指令中,其中 // 与代码的行注释一样表示注释的开始,indirect 表示间接的依赖。比如开.转载 2020-09-22 10:19:30 · 3013 阅读 · 0 评论 -
go env 命令介绍
一、go env 命令1、用途2、设置go env中的内容3、go build二、部分参数含义1、部分参数2、查看具体详情一、go env 命令1、用途输出 go 环境有关的信息2、设置go env中的内容1)、比如这个 GOOS:编译代码的操作系统名称,和 go build 搭配使用GOOS=windowsgo build 命令执行后生成了一个供 windows 使用的 projectName.exe 文件2)、我们要改成在linux下执行的文件,命令 SETSET GOOS.原创 2020-09-19 15:48:10 · 2196 阅读 · 0 评论 -
Go github.com/e421083458/golang_common/lib
一、前言二、相关地址三、配置文件详情1、base.toml2、mysql_map.toml3、redis_map.toml4、test.toml一、前言该说的这篇文章已经说了:一个快速上手、轻量级 Golang 公共类库 (golang_common)二、相关地址golang_common/lib项目地址配置文件地址三、配置文件详情1、base.toml为了能够正确的编写配置文件的参数,我把配置文件的格式在这里展示一下。# This is base config[base.原创 2020-09-19 15:21:31 · 326 阅读 · 0 评论 -
Go gorilla websocket 小试牛刀
一、项目引入二、项目使用1、根目录 GoWebsocket 下新建 go.mod 文件2、go build 构建项目3、go run 入口文件,执行项目4、GoLang中选择 client.html 文件,选择一种浏览器打开,如图![在这里插入图片描述](https://img-blog.csdnimg.cn/20200916155401842.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM.原创 2020-09-16 15:55:11 · 705 阅读 · 0 评论 -
Go 关键字 Select
一、Select二、超时控制三、break关键字结束select一、Selectselect 是Go语言中常用的一个关键字,Linux再也早也引入了这个函数,用来实现非阻塞的一种方式,一个select语句用来选择哪个case中的发送或接收操作可以被立即执行。它类似于switch语句,但是它的case涉及到channel有关的I/O操作。select{case <-chan1: // 如果成功读取到chan1中得数据,则进行该case处理语句case chan2 <- value:.转载 2020-09-15 11:53:10 · 241 阅读 · 0 评论 -
GoLand添加一个已有项目的相关配置
一、项目引入二、相关配置1、GOPATH设置2、设置Go Modules (vgo)3、设置go第三方包自动导入一、项目引入1、依次选择 File->New -> Project,如图:2、具体操作1)、最左边:类型选择为 Go Moudles ( vgo )2)、右边:Location 选择你需要导入的项目路径3)、右边:GOROOT 默认4)、右边:Vgo Executable 默认5)、右边:Proxy(代理) - 设置为 https://goproxy.cn.原创 2020-09-12 17:42:52 · 4015 阅读 · 0 评论 -
dial tcp 34.64.4.113:443: connectex: A connection attempt failed because the connected party did not
一、问题二、分析一、问题用 go build 创建项目,go第三方扩展包的时候报如下错误:dial tcp 34.64.4.113:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has fail.转载 2020-09-12 13:58:02 · 28941 阅读 · 0 评论 -
undefined: resolver.BuildOption
undefined: resolver.BuildOption1、在用clientv3连接etcd时,遇到个坑,报错如下图:2、原因 查了下,大概是说原因是google.golang.org/grpc 1.26 后的版本是不支持 clientv3 的。 也就是说要把这个改成1.26版本的就可以了。3、解决 版本切换命令如下:go get goog...原创 2020-09-12 11:24:49 · 291 阅读 · 0 评论 -
Windows10 安装 protobuf
一、protobuf的安装二、相关地址一、protobuf的安装1、protoc的源码和各个系统的预编译包 - https://github.com/protocolbuffers/protobuf/releases2、选择对应的安装文件下载,解压(tips:文件解压的路径最好是英文,无任何特殊字符,包括空格;之前安装es插件时就因为Program Files中有个空格,导致安装失败)3、添加到环境变量中(win10)步骤:电脑 -> 右键 -> 属性 -> 高级.原创 2020-09-11 17:26:19 · 6793 阅读 · 3 评论 -
micro安装
一、安装 protobuf二、安装 go-micro三 、安装 micro四、安装错误信息:找不到crypto包五、参考地址一、安装 protobuf命令go get github.com/micro/protobuf/{proto,protoc-gen-go}注:windows不支持 {...,...} 格式,我们可以分别执行,如下:go get github.com/micro/protobuf/protogo get github.com/micro/protobuf/prot.转载 2020-09-11 08:49:45 · 1395 阅读 · 0 评论 -
Golang web请求
目录一、创建项目二、创建文件三、写文件1、项目结构截图2、go文件3、hello.txt文件四、执行结果1、方法1执行结果2、方法2执行结果五、异常效果六、参考地址一、创建项目创建一个项目设置项目的类型为 Go Moudles(vgo),自定义项目名字,设置项目的Proxy为:https://goproxy.cn 点击 Create新窗口打开二、创建文件选中 【demo】-> 鼠标右键 -> New -> New Go File设置文件名为ma原创 2020-06-18 20:41:28 · 371 阅读 · 0 评论