![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang
官老林
有的人,忙于生活;
有的人,甘于平凡;
有的人,还在寻找方向;
有的人,还没准备好就长大了;
展开
-
golang string和[]byte零内存拷贝互转换
好久以前忘记在哪看到的了,最近要用到想了好久才想起来怎么写,记录以下,免得后面要用又要想很久func bytes2Str(slice []byte) string { return *(*string)(unsafe.Pointer(&slice))}func str2Bytes(s string) []byte { sh := (*reflect.StringHeader)(unsafe.Pointer(&s)) bh := reflect.SliceHeader{ Da原创 2021-07-20 20:28:38 · 1502 阅读 · 0 评论 -
gorm批量插入接口型slice
由于 gorm v1 不支持批量插入,于是升级为 gorm v2,原本以为就简单的吧 Create 改为 CreateInBatches 就可以了。但是一直 panic。大概能猜到是因为传入的数据是接口型的slice导致的,但是一直不知道该怎么改,网上搜了好久也没搜到相关的答案,最后在官方 issue 中看到了一个类似的问题(#3685),对应修改了下,终于可以了。还是自己太菜了。。。type I interface { TableName() string}type A struct {原创 2021-03-30 20:57:05 · 3465 阅读 · 0 评论 -
Golang利用reflect包实现struct相互填充
最近在用Golang写一些简单的业务,经常需要在两类相似的结构体之间相互填充数据,如果struct只有少数几个field,相互赋值还好;但如果struct有很多field的话,简直吐血,代码也不雅观,对于懒癌晚期简直不能容忍,看了下Golang的reflect包,好像找到一种偷懒的办法。。。type Request struct { Field1 string Field2 string...原创 2019-07-18 23:29:42 · 826 阅读 · 1 评论 -
Golang计算单个Goroutine占用内存
一直在想单个Goroutine大概占用多少内存呢?今天无意间在《Concurrency Go》中看到了这段计算单个Goroutine内存占用大小的代码,分享给同样有迷惑人。 在Win7 Go1.9环境,大概是8.9KB~9.1KB,确实够小的。。。package mainimport ( "fmt" "runtime" "sync")func getGoro...原创 2018-06-28 20:08:46 · 4580 阅读 · 1 评论 -
Golang实现一个简单的FTP客户端
使用Golang语言实现的一个简单的FTP客户端:Github源码:Golang实现一个简单的FTP客户端原创 2018-02-07 20:28:51 · 2805 阅读 · 0 评论 -
golang返回值为interface{}的类型判断
看标题就知道,这是一个很简单的问题,就一个函数的事,但是,今天一同学golang的几个人中,已经不止一个人问我了,在这里我就说一下,也希望对不清楚的娃有些许帮助,大神别喷,飘过就行了。 大家知道,golang对于不确定返回值可以用interface{}代替,这确实很方便,但是也带来了问题,那就是如何判断返回值是什么类型的?其实可以用反射也就是reflect来判断,通过函数reflect.TypeO原创 2015-12-04 17:40:08 · 10142 阅读 · 0 评论 -
golang简单实现银行家算法
这周课程设计,以为会很好玩,实验书发下来,居然只是实现银行家算法,失望了……用了小半天时间(原谅我上过操作系统居然连银行家算法是什么都忘了,只能回去看书重来),用golang简单实现了银行家算法,一下是代码:package mainimport ( "fmt" "log" "os")var Available []int //可以用资源向量var Max [][]i原创 2016-01-05 00:06:03 · 1250 阅读 · 0 评论 -
golang postgresql数据库驱动
今天周末,即使立冬已过,阳光依然独好,闲着没事做,coding。 一直用bm。。。/pq的SQL驱动,忘记叫啥了,一直没问题,今天看到地址转到了lib/pq,重新获取了驱动,继续使用,有如下一段代码,func DB() (db *sql.DB) { db, err := sql.Open("postgres", "user=postgres password=123456 dbname=t原创 2015-11-15 18:11:29 · 3241 阅读 · 1 评论 -
坑爹的golang日期时间格式format()
今天重拾golang,用到了format()函数格式化字符串,用了语句time.now().format(“2015-11-12 12:00:00”),结果输出结果就是不能达到理想的结果,然后把golang文档中的”2006-01-02 15:04:05“放进去就可以了,搞了好久没搞明白怎么回事,随意百度了一下,原来golang规定必须要用这个时间点,此刻我的心情,你们意会去……原创 2015-11-12 17:03:25 · 7872 阅读 · 2 评论 -
传值和传址
今天遇到一个问题,在函数外定义了一个变量,然后在函数中给其赋值,结果怎么都是为空,纠结了好久,原来是一个很低级的传值和传值错误,总算得以解决,这里用一个例子说明。 golang中在传递一个参数到函数的过程中其实是传递了一份copy,而原值不变,如果要改变原值,则必须传址。 var a int func add1(a int) int{ a=a+1 return a }原创 2015-09-22 23:17:29 · 399 阅读 · 0 评论 -
左移(1<<20)
今天在书上看到一段代码:http.Server{ Addr:"8080" …… MaxHeaderBytes:1<<20}知道1原创 2015-07-24 12:38:41 · 5147 阅读 · 3 评论 -
os.Open()和os.OpenFile()
一直以来都以为Open()和OpenFile()没有什么大的区别,今天操作日志文件才发现,两者有很大的区别。 这是我刚开始写的代码: logFile,err:=os.Open("log/system.txt") if err!=nil{ log.Fatalln("读取日志文件失败",err) } defer logFile.Close() lo原创 2015-08-25 19:16:14 · 20987 阅读 · 0 评论 -
golang缩略图
今天研究了golang生成缩略图的相关知识,在网上找到一篇不错的相关博客,博客地址:http://www.cnblogs.com/ghj1976/p/3445507.html。 有个注意事项这里提醒一下: 官方文档原话: Image接口可以通过调用如NewRGBA和NewPaletted函数等获得;也可以通过调用Decode函数解码包含GIF、JPEG或PNG格式图像数据的输入流获得。解码任何原创 2015-07-27 22:35:27 · 2258 阅读 · 0 评论