随笔分类 -  Golang

摘要:json字符串转golang map 我们知道golang处理json字符串时,需要先转成struct,并且struct必须是确定的。 有时候我们传递的json是不固定的,针对每种情况都写一个struct比较麻烦,有没有处理不确定json的方法呢? 答案是有的 var a string = "{\" 阅读全文
posted @ 2024-01-17 15:53 秋来叶黄 阅读(98) 评论(0) 推荐(0) 编辑
摘要:golang对数组的遍历基本上有两种,一种是根据索引,一种是使用range 使用range遍历得到的是复制过的数据,并不是数组原来的数据,所以不能赋值修改数组 如果想修改数组,需要使用索引遍历的方式 type STest struct { A int B int } // 使用range遍历,无法修 阅读全文
posted @ 2024-01-17 10:22 秋来叶黄 阅读(291) 评论(0) 推荐(0) 编辑
摘要:上一篇文章介绍了比较绕的一种用法,这篇文章介绍一些golang正常使用时的一些基础 非侵入式继承 再说一下非侵入式继承,就是struct不用明确指明从哪个interface继承,只需要实现interface的接口即可,即使interface不在同一个文件。 // myinterface.go typ 阅读全文
posted @ 2024-01-15 16:58 秋来叶黄 阅读(24) 评论(0) 推荐(0) 编辑
摘要:go env -w GOPROXY=https://goproxy.cn,direct 指定使用代理下载,上面是七牛云的,也可以使用其他的。 阅读全文
posted @ 2023-11-01 15:17 秋来叶黄 阅读(394) 评论(0) 推荐(0) 编辑
摘要:Sonic 如果对性能要求非常高,可以使用Sonic。但是Sonic有一些要求,高性能必然带来特例化,官方也介绍了,对CPU架构和系统等都有要求。其底层使用了一些汇编和c的代码实现,所以如果不是对性能要求特别高,可以不用。 fastjson fastjson介绍就是非常快,不过功能相对较少。好久已经 阅读全文
posted @ 2023-10-31 17:26 秋来叶黄 阅读(1141) 评论(0) 推荐(0) 编辑
摘要:结构体数组与接口数组转换 如果想把[]struct转为[]interface,我们发现直接赋值会报错。 理论上interface可以转换任何数据,为什么结构体数组不可以呢?这是因为interface的设计导致的,如果能理解interface的底层实现,就能很清楚知道如何转换了。 如图所示,与C++的 阅读全文
posted @ 2023-10-19 11:11 秋来叶黄 阅读(92) 评论(0) 推荐(0) 编辑
摘要:很多人都说用go代替php或者java的最大短板就是写业务太反人类。经过最近的一些使用,发现确实与常见的java或者c++有些区别,在这里说明一下。 go继承多态的现状 go没有类的概念 也没有所谓的继承多态。所以按照常规用法开发相应的业务逻辑,确实不适用。 go只有struct和interface 阅读全文
posted @ 2023-08-03 10:45 秋来叶黄 阅读(455) 评论(0) 推荐(0) 编辑
摘要:有时候想根据不同的参数编译不同的内容,可以在编译命令中增加参数。 ``` go build -ldflags -X main.mytest=abc ``` 在程序main函数前定义对应的变量 ``` var mytest = "" ``` 就可以直接使用拿到abc 阅读全文
posted @ 2023-07-21 10:02 秋来叶黄 阅读(142) 评论(0) 推荐(0) 编辑
摘要:开发高性能server的时候,不可避免的需要对原生socket做一些配置调优,包括设置io复用、接收发送缓存大小等 如果使用io复用,必须要设置监听socket为SO_REUSEADDR和SO_REUSEPORT。设置复用端口和地址还有个好处,就是程序崩溃后,端口监听有可能没有释放,必须要等两分钟才 阅读全文
posted @ 2023-07-20 13:32 秋来叶黄 阅读(349) 评论(0) 推荐(0) 编辑
摘要:具体原因和底层细节没有仔细看,不做描述,只说一下结果。循环获取UDP的socket数据,满速情况下(每个数据包获取后输出一下当前接收数据包总数),println比fmt.Println慢了1倍。比如发送10万个包,fmt.Println可以接收到9万多,而println只能接收4万~5万 阅读全文
posted @ 2023-07-19 16:56 秋来叶黄 阅读(68) 评论(0) 推荐(0) 编辑
摘要:虽然go提供了很多便于并发的功能,但是写出一个高性能的程序还是有一定挑战的。当程序遇到性能问题,go同样提供了比较好的工具便于分析。 # 引入net/http/pprof" ``` import ( _ "net/http/pprof" ) ``` # 在main函数最后启动http server 阅读全文
posted @ 2023-07-14 09:39 秋来叶黄 阅读(33) 评论(0) 推荐(0) 编辑
摘要:这是因为配置的GOPATH路径下有go.mod,也就是这两个不能在同一个目录下 阅读全文
posted @ 2023-07-14 09:20 秋来叶黄 阅读(74) 评论(0) 推荐(0) 编辑
摘要:有一个golang工程,没有go.mod,用goland打开,配置编译,会提示没有go.mod,但是增加了go.mod,又提示工程目录下引用的包找不到。 # 去掉go.mod ![](https://img2023.cnblogs.com/blog/466332/202307/466332-2023 阅读全文
posted @ 2023-07-14 09:19 秋来叶黄 阅读(55) 评论(0) 推荐(0) 编辑
摘要:有一个结构体 ``` type mystruct struct { a int } ``` 如果想为这个结构体增加一个方法,就类似于C++或者Java的类一样,有成员变量,也有成员函数,怎么实现呢?由于go没有类的概念,所以提供了一种方案。 ``` func (ms mystruct) test() 阅读全文
posted @ 2023-07-08 13:38 秋来叶黄 阅读(32) 评论(0) 推荐(0) 编辑
摘要:因为配置`GOPATH`与`GOROOT`目录相同,所以报警,可以专门创建一个目录设置`GOPATH`。 `GOROOT`是下载安装go的目录,然后在环境变量`PATH`中配置好安装go目录下的bin目录,再创建一个目录配置为`GOPATH`即可 阅读全文
posted @ 2023-07-07 17:41 秋来叶黄 阅读(4472) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示