![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go语言
dodod2012
其实我是一个搬运工,搬走了别人的砖头从来不留名O(∩_∩)O哈哈~
展开
-
golang--自动下载邮件的附件
这个是之前做的一个小应用,主要用到的是golang的go-imap这个库。之前看到php和java都有完整的自动下载邮件的程序,现在也分享一个golang的,其中主要麻烦的是判断邮件的状态,是否未读,然后就是获取附件并且下载,具体代码如下:package mainimport ( "io" "io/ioutil" "log" "os" "github.com/emersion/go-imap" "github.com/emersion/go-imap/client" "githu原创 2021-11-18 15:56:42 · 1240 阅读 · 0 评论 -
golang压缩和解压缩zip文件的一些总结
golang压缩和解压缩zip文件一个简单例子说明如何使用golang提供的archive/zip包实现zip文件的压缩和解压缩。压缩提供两个参数:一个是输入源文件 另一个是输出zip压缩文件其中输入源文件可以是一个文件,也可以好似一个目录,如果是目录那么目录下的所有文件都会被压缩到输出。当然这个函数很容易被扩展成支持多个输入源文件/目录的情况。// srcFile could be a single file or a directoryfunc Zip(srcFile原创 2021-11-12 16:10:43 · 2147 阅读 · 1 评论 -
Go语言:递归遍历一个文件夹的所有文件(带层级化输出)
代码实例:package mainimport ( "io/ioutil" "strings")func main() { // 要遍历的文件夹 dir := `./` // 遍历的文件夹 // 参数:要遍历的文件夹,层级(默认:0) findDir(dir, 0)}// 遍历的文件夹func findDir(dir string, num int) { fileinfo, err := ioutil.ReadDir转载 2021-11-11 16:52:05 · 1686 阅读 · 0 评论 -
Go语言:UUID 的生成与解析
导言:因为Golang中的UUID还没有纳入标准库,所以我们使用GitHub上的开源库,另外我所提供的这个开源库支持 UUID v5,代码实例我就用比较常用的 UUID v4 演示了安装:go get github.com/satori/go.uuid代码实例:package mainimport ( "github.com/satori/go.uuid")func main() { // 创建 UUID v4 u1 := uuid.Must(.转载 2021-09-29 11:28:26 · 1724 阅读 · 0 评论 -
Go语言:编译后文件体积过大解决方案
起因在 windows10 64位 下测试 C 和 Go 效率都差不多 但 Go 编译出来的文件比 C 编译出来的还大 个人感觉简单的 Hellow world 都这么大,体积太夸张了 所以查询了一些关于 Go 的编译优化,得出了下面两个方案优化方案 第一步:编译优化使用一下指令进行编译: go build -ldflags="-w -s" 说明:会去除DWARF调试信息、符号信息优化方案 第二步:压缩优化安装UPX,并使用最高级别的压缩 下载地址:https...翻译 2021-09-29 10:55:17 · 3421 阅读 · 0 评论 -
Go语言:使用zip压缩 文件 / 文件夹
package mainimport ( "archive/zip" "io" "os" "path/filepath" "strings")func main() { Zip(`C:\打包的路径`, `.zip`)}// 打包成zip文件func Zip(src_dir string, zip_file_name string) { // 预防:旧文件无法覆盖 os.RemoveAll(zip_file_name) .转载 2021-09-28 16:36:05 · 1431 阅读 · 0 评论 -
Go语言:设置日志保存到日志文件
package mainimport ( "log" "os")func init() { // 获取日志文件句柄 // 已 只写入文件|没有时创建|文件尾部追加 的形式打开这个文件 logFile, err := os.OpenFile(`./日志文件.log`, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) if err != nil { panic(err) } // 设.转载 2021-09-28 16:18:39 · 2576 阅读 · 0 评论 -
在golang中将[] byte变成“虚拟”文件对象的简单方法?
I know there are Go libraries that create entire filesystems likeVFS. But I only want to make a byte array into something that can fulfil theFileinterface.翻译翻译:我知道有Go库可以创建整个文件系统,例如VFS。 但我只想将字节数组制成可以满足File接口的对象解决方法:There is no ready solut...转载 2021-09-01 10:23:25 · 1059 阅读 · 0 评论 -
Go1.10 golang编译成dll小实例
package mainimport ( "net")//必须导入import "C"//编译成动态库也是必须的func main() {}//export Interfacesfunc Interfaces(list []string, retlen *int) string { interf, err := net.InterfaceAddrs() if err != nil { return err.Error() } .转载 2021-08-12 16:06:39 · 296 阅读 · 0 评论 -
Golang 编译成 DLL 文件
golang 编译 dll过程中需要用到 gcc,所以先安装 MinGW。windows 64 位系统应下载 MinGW 的 64 位版本:https://sourceforge.net/projects/mingw-w64/下载后运行mingw-w64-install.exe,完成 MingGW 的安装。首先撰写 golang 程序 exportgo.go: 1 2 3 4 5 6 7 8 9 10 ...转载 2021-07-30 16:37:14 · 387 阅读 · 0 评论 -
golang 编译为dll 的方法
Golang封装成dll可以吗?要怎么做Golang可以将程序编译成DLL文件,具体做法如下:1、golang 编译 dll 过程中需要用到 gcc,所以先安装 MinGW。windows 64 位系统应下载 MinGW 的 64 位版本: https://sourceforge.net/projects/mingw-w64/2、下载后运行 mingw-w64-install.exe,完成 MingGW 的安装。3、首先撰写 golang 程序 exportgo.go:packag转载 2021-07-30 15:12:46 · 4744 阅读 · 0 评论 -
golang.org/x/net 安装方法
为了使包的导入方式不变,我们需要在src目录下面构造目录结构$mkdir -p $GOPATH/src/golang.org/x/$cd $GOPATH/src/golang.org/x/$git clone https://github.com/golang/net.git net$go install net执行go install之后没有提示,就说明安装好了。...转载 2021-07-21 16:22:16 · 390 阅读 · 0 评论 -
go-bindata打包配置文件嵌入到二进制文件
项目中难免会用到一些静态资源和配置文件,但是常规打包的二进制文件无法再其他目录正常运行(静态资源和配置文件不存在)有类似需求的可以安装使用:go-bindata进行编译处理配置文件go-bindata(go-bindata)包实现将项目静态配置文件嵌入到go文件,解决了打包时候因相对路径问题,导致的二进制文件不能再任何目录下运行go-bindata原理:运行go-bindata会将指定目录下的静态文件或配置编译成二进制嵌入到bindata文件中,所以如果配置文件更新的话需要重新生成该文.转载 2021-07-15 11:27:59 · 969 阅读 · 0 评论 -
Go语言资料收集
1.Go语言高级编程https://www.cntofu.com/book/73/index.html原创 2021-06-23 15:39:14 · 79 阅读 · 0 评论 -
golang内网穿透工具
golang内网穿透工具V2.0(支持windows与linux)https://gitee.com/stlswm/transponder其他参考学习zi原创 2021-06-17 16:45:42 · 429 阅读 · 0 评论 -
使用Go实现TLS 服务器和客户端
使用Go实现TLS 服务器和客户端传输层安全协议(Transport Layer Security,缩写:TLS),及其前身安全套接层(Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。SSL包含记录层(Record Layer)和传输层,记录层协议确定了传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方转载 2021-06-16 16:25:45 · 1675 阅读 · 0 评论 -
Golang 交叉编译
Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序。Mac 下编译 Linux 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.goLinux 下编译 Mac 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go转载 2021-06-09 14:13:35 · 159 阅读 · 0 评论 -
golang 读取文件的四种方式
参考Go实战--golang中读写文件的几种方式读文件读取的文件放在file/test:也就是file包下的test这个文件,里面写多一点文件读文件方式一:利用ioutil.ReadFile直接从文件读取到[]byte中func Read0() (string){ f, err := ioutil.ReadFile("file/test") if err != nil { fmt.Println("read fail", err) }转载 2021-06-09 11:09:59 · 3684 阅读 · 1 评论 -
go语言读文件
读写文件是最基本的功能。go语言读文件挺有意思,由于go语言的interface,使得go语言与其他语言有所不同。与其他语言一样,go语言有File类型的结构体,但File只提供了最基本的Read,Write等功能,而类似 与ReadLine这样的功能实在bufio包里提供的。1,使用最传统的方式,Open,Read,Close,代码如下:...转载 2021-06-08 16:18:47 · 129 阅读 · 0 评论 -
go 函数os.OpenFile
go 系统函数os.OpenFile定义为func OpenFile(name string, flag int, perm FileMode) (*File, error)特简单,传入路径,flag,已经权限就打开了。在使用中发现大家的调用方式常用os.OpenFile("./app.log", os.O_CREATE|os.O_RDWR|os.O_APPEND, 0644)这个0644是什么鬼?在go源码里枚举也没这些定义呀,猜测应该是某些权限的集合。要是0777倒好理解了,因为转载 2021-06-08 16:16:41 · 2258 阅读 · 1 评论 -
[golang] golang文件读写 os.OpenFile(fileName,os.O_APPEND|os.O_WRONLY,os.ModeAppend)
阅读目录(Content)[golang] golang文件读写 os.OpenFile(fileName,os.O_APPEND|os.O_WRONLY,os.ModeAppend) 读写文件要用到的OS包 可用的打开方式有 打开模式 创建一个文件并追加内容 删除文件 创建目录 创建完整目录路径,即中间目录不存在的话也一起创建 golang os.OpenFile几种常用模式引言回到顶部(go to top)[golang] golang文件读写 os.Op转载 2021-06-08 16:13:37 · 1780 阅读 · 0 评论 -
Golang AES 加密 解密
对称加密 AES 算法(Advanced Encryption Standard ,AES)优点 算法公开、计算量小、加密速度快、加密效率高。 缺点 发送方和接收方必须商定好密钥,然后使双方都能保存好密钥,密钥管理成为双方的负担。 应用场景...转载 2021-06-08 16:11:01 · 2994 阅读 · 0 评论 -
Go - 数字转字符串,字符串转数字
使用strconv 包 PS:这个包天天我记不住,总的百度一下,呜呜 strconv包实现了基本数据类型和其字符串表示的相互转换package main import ( "fmt" "strconv") // strconv.Itoa():整型转字符串// strconv.Atoi():字符串转整型 返回2个值,第一个是值,第二个是错误,下面没有做处理 func main() { // 123 转换成 "123" num := 123...转载 2021-06-07 16:51:59 · 365 阅读 · 0 评论 -
go json嵌套数组结构体用法
注意:如果访问不到解析后的数据,一定要注意结构体内变量名称大写。由于之前没有很好理解json,导致今天写单元测试的时候写json嵌套出现了大麻烦,记录一下。golang生成json和解json数据都很简单,通过官方的“encoding/json”包,调用json.Marshal生成()和json.Unmarshal()解数据。接下来重点讲嵌套的情况下如何生成json,如下:type AlipayRemoteReqStruct struct { Ono string `json:on...转载 2021-06-07 16:47:45 · 1865 阅读 · 0 评论 -
一个简单的Golang实现的HTTP Proxy方法
最近因为换了Mac,以前的Linux基本上不再使用了,但是我的SS代理还得用。SS代理大家都了解,一个很NB的socks代理工具,但是就是因为他是Socks的,想用HTTP代理的时候很不方便。以前在Linux下的时候,会安装一个Privoxy把socks代理转换为HTTP代理,开机启动,也比较方便。但是Mac下使用Brew安装的Privoxy就很难用,再加上以前一个有个想法,一个软件搞定socks和HTTP代理,这样就不用安装一个单独的软件做转换了。想着就开始做吧,以前基本上没有搞过太多的网络编程,转载 2021-06-03 14:09:43 · 2247 阅读 · 0 评论 -
Go语言TCP Socket编程
Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket实现的。网络编程方面,我们最常用的就是tcp socket编程了,在posix标准出来后,socket在各大主流转载 2021-06-02 09:46:33 · 408 阅读 · 0 评论 -
GO语言获取文件的大小
在项目中,我们可能会需要获取一个文件的大小,在Go语言中,有很多方法来获取一个文件的大小Read字节方式func main() { file,err:=os.Open("water") if err ==nil { sum := 0 buf:=make([]byte,2014) for { n,err:=file.Read(buf) sum+=n if err=转载 2021-05-26 16:30:18 · 1017 阅读 · 0 评论 -
golang 字符串去除空格和换行符
package main import ( "fmt" "strings" ) func main() { str := "这里是 www\n.runoob\n.com" fmt.Println("-------- 原字符串 ----------") fmt.Println(str) // 去除空格 str = strings.Replace(str, " ", "", -1) // 去.转载 2021-05-26 14:14:09 · 8188 阅读 · 1 评论 -
golang 动态创建目录(文件夹)
根据当前时间在固定目录下动态创建文件夹并修改文件夹的权限,如果文件夹已存在则不创建具体代码如下://basePath是固定目录路径func CreateDateDir(basePath string) (dirPath, dataString string) { folderName := time.Now().Format("2006-01-02") folderPath := filepath.Join(basePath, folderName) if _, err := os.Stat转载 2021-05-24 16:19:40 · 5465 阅读 · 0 评论 -
go多种uuid生成方式
package mainimport ( "fmt" "github.com/chilts/sid" "github.com/kjk/betterguid" "github.com/oklog/ulid" "github.com/rs/xid" "github.com/satori/go.uuid" "github.com/segmentio/ksuid" "github.com/sony/sonyflake" "log" "math/rand" "time")func g.转载 2021-05-24 16:16:39 · 6447 阅读 · 0 评论 -
Go语言:获取执行文件所在目录(效率最快)
代码示例:package mainimport ( "os")func main() { dir, _ := os.Getwd() println(dir)}特殊情况:在一些特殊使用场景,上述的方法会获取到错误路径 目前已知:系统来调用这个可执行文件 可以使用下面这个方法代替package mainimport ( "os" "path/filepath")func main() { dir, _ := os.E..转载 2021-05-24 16:06:01 · 1126 阅读 · 0 评论 -
GO 语言常用工具类-通用方法集合
GO 语言常用工具类-通用方法集合github: https://github.com/gitstliu/go-commonfunctions1. PanicHandler通用Panic处理器2. InterfacesToStrings将Interface数组转换为String数组3. GetFilesWithFolder获得文件夹下所有文件4. ObjectToJson将对象转换为JSON5. ObjectsToJson将对象数组转换为JSON数组6. DecodeGz转载 2021-04-29 09:01:22 · 731 阅读 · 0 评论 -
Golang学习笔记--遍历文件夹及子文件夹的所有文件
遍历文件夹及子文件夹下的所有文件,最容易想到的就是用递归的方法,先访问当前目录,读取当前目录下的所有文件,如果是个目录,递归调用遍历目录下的所有文件。具体代码如下:package main import ( "fmt" "io/ioutil") func GetAllFile(pathname string, s []string) ([]string, error) { rd, err := ioutil.ReadDir(pathname) if err != nil { fm转载 2021-04-28 15:57:39 · 1058 阅读 · 0 评论 -
在 Golang 中使用 Protobuf
安装 goprotobuf1.从 https://github.com/google/protobuf/releases获取 Protobuf编译器 protoc(可下载到 Windows下的二进制版本wget https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gztar zxvf protobuf-2.6.1.tar.gzcd protobuf-2.6.1./config...转载 2021-04-23 15:02:36 · 729 阅读 · 0 评论 -
使用golang发送电子邮件
电子邮件在日常工作中有很大用途,凡项目或任务,有邮件来往可避免扯皮背锅(是否背锅,取决于人,而非邮件)。而在一些自动化的应用场合,也使用得广泛,特别是系统监控方面,如果在资源使用达到警戒线之前自动发邮件通知运维人员,能消除隐患于前期,而不至于临时临急去做善后方案。对于多人协合(不管是不是异地)场合,邮件也有用武之地,当有代码或文档更新时,自动发邮件通知项目成员或领导,让各方人员知晓并及时更新(是否更新,取决于人,而非工具)。说到发邮件,不得不提用程序的方式实现。笔者之前已经开通了腾讯免费企业邮箱,并关转载 2021-03-26 16:27:49 · 2001 阅读 · 0 评论 -
golang 按任意键继续
package mainimport ( "fmt")import ( termbox "github.com/nsf/termbox-go")func init() { if err := termbox.Init(); err != nil { panic(err) } termbox.SetCursor(0, 0) termbox.HideCursor()}func main() { fmt.Println("hello") pause() fmt.Pri.转载 2020-07-16 15:26:50 · 1633 阅读 · 0 评论 -
Go语言图形界面开发:Go版GTK
原文地址:https://blog.csdn.net/tennysonsky/article/details/79293700本人录制的Go入门视频go语言开发实战:https://pan.baidu.com/s/1bqOR9qZ Go语言GUI编程:https://pan.baidu.com/s/13yoUhqEUyrT_9bpi7K0rYQ初识GTK01、GUI概述 02、GT...转载 2018-07-16 16:37:15 · 5558 阅读 · 0 评论 -
Go环境搭建:windows+sublime3
原文地址:https://blog.csdn.net/tennysonsky/article/details/77688679Go语言环境安装Go安装包下载网址:https://studygolang.com/dlhttps://www.golangtc.com/download有zip压缩版和msi安装版两个按本下载。(这里使用msi安装版,比较方便)。运行msi安装文件...转载 2018-07-20 10:57:51 · 370 阅读 · 0 评论 -
Go环境搭建:windows+liteide
原文地址:https://blog.csdn.net/tennysonsky/article/details/77688947Go语言环境安装请参考:Go语言环境安装Go语言环境测试请参考:Go语言环境测试LiteIDE安装LiteIDE 是一款简单,开源,跨平台的 Go IDE。官网:http://liteide.org/cn/ 发行版下载地址:https://so...转载 2018-07-20 11:04:49 · 298 阅读 · 0 评论 -
Go基础编程:环境搭建
原文地址:https://blog.csdn.net/tennysonsky/article/details/77935999安装和设置Go环境搭建:ubuntu+sublime3 Go环境搭建:ubuntu+liteide Go环境搭建:windows+sublime3 Go环境搭建:windows+liteide标准命令概述Go语言中包含了大量用于处理Go语言代码的命令和工...转载 2018-07-20 15:00:25 · 220 阅读 · 0 评论