![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
ssuqin001
特立独行
展开
-
go处理无key的jsonArray记录
go处理无key的jsonArray转载 2022-12-02 14:56:36 · 222 阅读 · 0 评论 -
编译go版本的supervisord
编译go版本的supervisord原创 2022-07-21 15:50:35 · 313 阅读 · 0 评论 -
在Golang中各种永远阻塞的姿势
Go的运行时的当前设计,假定程序员自己负责检测何时终止一个goroutine以及何时终止该程序。 可以通过调用os.Exit或从main()函数的返回来以正常方式终止程序。而有时候我们需要的是使程序阻塞在这一行。使用sync.WaitGroup一直等待直到WaitGroup等于0package mainimport "sync"func main() { var wg sync.WaitGroup wg.Add(1) wg.Wait()}空selec转载 2021-09-23 17:16:10 · 441 阅读 · 0 评论 -
golang在linux后台执行的方法
golang在linux后台执行的方法go build ./index.go会生成一个index的运行文件nohup index & ()后台运行index文件killall index你可能还要关闭indexsetGOARCH=amd64setGOOS=linuxgobuild xx.go赋予权限chmod 777 xx...转载 2021-06-11 11:43:50 · 1502 阅读 · 1 评论 -
golang获取文件/目录(包含下面的文件)的大小
func DirSize(path string) (int64, error) { var size int64 err := filepath.Walk(path, func(_ string, info os.FileInfo, err error) error { if !info.IsDir() { size += info.Size() } return err }) return size,...转载 2021-05-20 16:02:01 · 1017 阅读 · 0 评论 -
ubuntu安装、升级、卸载go语言
ubuntu安装、升级、卸载golang一、安装go下载go 方法一:官网下载:https://golang.org/dl/ 方法二:打开ubuntu输入: wget https://dl.google.com/go/go1.15.3.linux-amd64.tar.gz解压安装包:sudo tar -C /usr/local -xzf go1.15.3.linux-amd64.tar.gz建立软连接: (1)sudo ln -s /usr/local/go/..转载 2021-05-07 13:28:23 · 1376 阅读 · 0 评论 -
Linux下安装Go环境
安装Go环境Golang官网下载地址:https://golang.org/dl/打开官网下载地址选择对应的系统版本, 复制下载链接 这里我选择的是go1.11.5.linux-amd64.tar.gz:https://dl.google.com/go/go1.11.5.linux-amd64.tar.gzimage.pngcd进入你用来存放安装包的目录,我习惯在~下面创建个go文件夹。# 在 ~ 下创建 go 文件夹,并进入 go 文件夹mkdir ~/go &.转载 2021-05-07 13:26:13 · 129 阅读 · 0 评论 -
Go:go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘
报错信息:go: go.mod file not found in current directory or any parent directory; see 'go help modules'解决方法:go env -w GO111MODULE=auto本文转载自:https://blog.csdn.net/weixin_38184741/article/details/115803950转载 2021-05-07 13:23:52 · 2907 阅读 · 1 评论 -
gopsutil库获取Cpu、Mem、Disk
package mainimport ( "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/disk" "github.com/shirou/gopsutil/mem" "time")func GetCpuPercent() float64 { percent, _ := cpu.Percent(time.Second) return percent[0]}func GetMemP..转载 2021-04-14 11:57:44 · 1171 阅读 · 0 评论 -
golang文件服务器的两种方式(可以访问任何目录)
一、方法1:主要用到的方法是http包的FileServer,参数很简单,就是要路由的文件夹的路径。 1 2 3 4 5 6 7 8 9 10 11 12 13 package main import ( "fmt" "net/http" ) func main() { http.Handle(...转载 2021-04-07 20:47:46 · 2588 阅读 · 0 评论 -
golang如何删除数组中的元素
Slice删除元素的本质Go语言并没有提供用于删除元素的语法或接口,而是通过利用切片本身的特性来删除元素——追加元素。即 以被删除元素为分界点,将前后两个部分的内存重新连接起来。使用切片的追加(append)特性,利用代码实现。Slice删除元素的实现:由于切片没有语法糖实现删除,因此利用其追加元素的特性完成元素的删除操作;通过内建函数 append() 实现对单个元素以及元素片段的删除。具体的思路就是具体的代码实现如下所示:// 从切片中删除元素func SliceDelete...转载 2021-04-02 20:01:24 · 9587 阅读 · 0 评论 -
读取目录下的文件并按时间进行排序
根目录不包含子目录,使用[]os.FileInfo切片定义文件按时间排序。按时间从远到近排序,文件总数如果大于 5 个,就从远的开始删除。package mainimport ( "fmt" "log" "os" "sort" "strings" "time")type ByModTime []os.FileInfofunc (fis ByModTime) Len() int { return len(fis)}func (fis ByModTime) Swap(i.转载 2021-03-30 15:44:34 · 1181 阅读 · 0 评论 -
golang 中string和int类型相互转换
总结了golang中字符串和各种int类型之间的相互转换方式:string转成int:int, err := strconv.Atoi(string)string转成int64:int64, err := strconv.ParseInt(string, 10, 64)int转成string:string := strconv.Itoa(int)int64转成string:string := strconv.FormatInt(int64,10)本文转载自:https://bl.转载 2021-03-30 11:42:02 · 181 阅读 · 0 评论 -
go字符串拼接方法
Go 语言中的字符串是只读的+拼接方式这种方式是我在写golang经常用的方式,go语言用+拼接,php使用.拼接,不过由于golang中的字符串是不可变的类型,因此用 + 连接会产生一个新的字符串对效率有影响。转自:go语言中文文档:www.topgoer.comfunc main() {s1 := “hello”s2 := “word”s3 := s1 + s2fmt.Print(s3) //s3 = “helloword”}sprintf函数s1 := “hello”s转载 2021-03-30 11:40:48 · 1906 阅读 · 0 评论 -
golang获取文件夹下面的文件列表
golang的文档里面比较容易找到的一个方法是filepath.Walk,这个方法有个问题是会自动递归遍历当前目录的子目录,其实我们通常只是想得到一个目录下面的文件列表,并不需要这么多的信息,同时这个方法代码写起来也比较多比较复杂,我们也没有必要这么做.如果仅仅是想获取一个目录下面的文件和文件夹的列表,有两个比较简单的方法利用ioutil的ReadDir方法package mainimport ( "fmt" "io/ioutil")func main() {...转载 2021-03-30 11:39:11 · 1113 阅读 · 0 评论 -
list的声明、遍历及常用方法
list是列表,一种非连续存储的容器,由多个节点组成,节点通过一些变量记录彼此之间的关系。list有多种实现方法,如单向链表、双向链表等。Go语言中的list的实现原理是双向链表,list能高效地进行任意位置的元素插入和删除操作。Golang的标准库提供了高级的数据结构List,具体在包container/list。container/list包里主要有两个数据结构类型:“Element”、“List”;Element类型代表双向链表中的一个元素,相当于C++里面的“iterator”List代表转载 2021-03-30 11:36:21 · 1314 阅读 · 0 评论 -
golang 获取磁盘内存占用
获取磁盘占用情况 linux mac下有效import ("syscall")type DiskStatus struct {All uint64 `json:"all"`Used uint64 `json:"used"`Free uint64 `json:"free"`}// disk usage of path/diskfunc DiskUsage(path string) (disk DiskStatus) {fs := syscall.Statfs_转载 2021-03-30 10:34:50 · 2606 阅读 · 0 评论 -
说一说go mod
写在前面,我们要切换到go mod吗go mod是官方力推的go模块依赖管理的工具,有官方的背书,肯定是要用的。go1.13已经默认支持了,所以迟早要切到go mod, 势不可挡。go mod什么go mod能管理的依赖包的版本,能保证在不同地方构建,获得的依赖模块是一致的。没有go mod之前如何管理包依赖没有go mod之前,有go deps, vendor等方法来解决。go mod如何工作go 1.11通过设置环境变量GO111MODULE来决定是否启用export G转载 2021-03-26 20:38:11 · 1614 阅读 · 0 评论 -
Goland配置goproxy.cn代理
打开Goland软件,可以看到如下菜单。选中File菜单,在弹出的菜单列表中,选中Settings选项。进入Settings界面注意上图圈起来的两处:1、勾选Enable Go Modules integration.(必须)2、设置Environment:值为GOPROXY=https://goproxy.cn,direct.(固定配置)...原创 2021-03-26 20:32:56 · 14277 阅读 · 0 评论 -
GoLand HTTP Proxy 代理设置问题
Goland系统设置中设置并且开启了 HTTP Proxy 后,如果Go代码使用net/http包进行网络请求,并且通过Goland运行,也会去读取这个 HTTP Proxy环境变量走这代理。真让人掉头发。。。本文转载自:https://blog.csdn.net/qq_23179075/article/details/109113244...转载 2021-03-26 20:22:07 · 864 阅读 · 0 评论 -
go:*handler is pointer to interface, not interface
一句话总结:不能声明一个接口的指针,如同不能在C++中不能声明一个指向引用的指针。type handler interface { Do()}var h *handler //errorC++中不能声明一个指向引用的指针int&* p; //error本文转载自:https://blog.csdn.net/Nick_666/article/details/78629196...转载 2021-03-17 16:29:41 · 697 阅读 · 0 评论 -
Go 结构体三种主要实例化方法及其内存分配区别
前言 结构体是众多属性的集合,每个属性都有其类型和值。在对结构体的使用中,结构体的初始化必不可少,本文列举Go中主要的几种初始化方法及示例,最后从内存分配角度分析了其区别。一、三种主要实例化方法1. var 声明type person struct{ age int name string}func main() { var fan person fan.age = 10 fan.name = "fan"}2.new...转载 2021-03-17 15:04:45 · 842 阅读 · 0 评论 -
Go关键字--var
varvar关键字用来定义变量,不论定义什么类型的变量,都可以使用var来定义。var 变量名 [类型] [=] [初始值] 定义变量时,如果定义的变量没有初始化,则必须指定变量类型;如果变量定义时初始化,则可以不指定类型,由编译器自行推断变量类型。如定义一个变量名为num的int类型变量方法如下:var num intvar num int = 8var num = 8num := 8在定义变量时,var关键字可以省略,如使用num:=8来定义变量,就省略了var关键字转载 2021-03-17 14:53:29 · 1124 阅读 · 0 评论 -
Go结构体继承指针和非指针区别(转换接口)
1.实例不转换为接口的情况下无区别总结: 不转换为接口时(字段继承和字段指针继承)无区别, 在代码中1,2,3,4处(即a,b,pa,pb)都可以正常调用父类的函数package main import "fmt" type iter interface { run() sleep()}type base struct{} func (p *base)run() { fmt.Println("Base::run()")} func (p base)s转载 2021-03-17 11:46:35 · 612 阅读 · 0 评论 -
初探之 sync.Once
# 描述sync.Once是 Golang package 中使方法只执行一次的对象实现,作用与init函数类似。但也有所不同。init函数是在文件包首次被加载的时候执行,且只执行一次 sync.Once是在代码运行中需要的时候执行,且只执行一次当一个函数不希望程序在一开始的时候就被执行的时候,我们可以使用sync.Once。例如:package mainimport ( "fmt" "sync")func main() { var once sync.O...转载 2021-03-16 19:22:52 · 113 阅读 · 0 评论 -
golang中的匿名组合
确切地说,Go语言也提供了继承,但是采用了组合的文法,所以我们将其称为匿名组合:type Base struct {Name string}func (base *Base) Foo() {...}func (base *Base) Bar() {...}type Foo struct {Base...}func (foo *Foo) Bar() {foo.Base.Bar()...}以上代码定义了一个Base类...转载 2021-03-16 19:13:33 · 279 阅读 · 0 评论 -
2021-03-16
以上是用来测试sh脚本的磁盘目录结构。当我执行完以下脚本:#!/usr/bin/env bashCURRENT_DIR=`pwd` # build.sh脚本所在目录OLD_GO_PATH="$GOPATH" #例如: C:/Go_WorkSpaceOLD_GO_BIN="$GOBIN" #例如: C:/Go_WorkSpace/binexport GOPATH="$CURRENT_DIR" export GOBIN="$CURRENT_DIR/bin"#指定并整理当前的源码..原创 2021-03-16 11:44:30 · 81 阅读 · 0 评论 -
go开发问题记录
GO语言eclipse开发环境搭建,请移步到https://blog.csdn.net/n_fly/article/details/114697359为什么报这样的错,目前我还没搞明白。我简单记录下,我后面是怎么操作,让其运行成功的。1、将go工程src目录cmd文件夹下go文件复制到hello文件夹下。2、打开Run Configurations配置界面,配置Go package to build项为hello。3、重新编译运行,文件可以正常执行。...原创 2021-03-12 15:59:48 · 90 阅读 · 0 评论 -
GO语言eclipse开发环境搭建
GO语安装环境操作系统 Win 10Go SDK 版本 1.12.5eclipse 版本 photon or later.#一、配置GO的环境变量最新稳定版 1.12.5 安装包 go1.12.5.windows-amd64.msi下载地址 https://golang.google.cn/dl/,嫌网速慢可到https://download.csdn.net/download/weixin_43103088/10639222此处下载,下载之后直接运行安装,安装路径就使用它默认的 C:\转载 2021-03-12 15:35:15 · 298 阅读 · 0 评论 -
初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录
我们接下来一个一个来看关于Go语言中的三个目录的详细解释先通过go env查看go的环境变量(我这里是mac的环境,所以可能和你的不同)localhost:~ zhaofan$ go envGOARCH="amd64"GOBIN=""GOEXE=""GOHOSTARCH="amd64"GOHOSTOS="darwin"GOOS="darwin"GOPATH="/Users/zhaofan/go_project"GORACE=""GOROOT="/usr/local/Cellar/g转载 2021-03-12 10:53:35 · 543 阅读 · 0 评论 -
goland报错:package XXX is not in GOROOT (X:\XXX\Go\src\XXX)
项目场景:新建项目,写完代码后,需求是正常运行!问题描述:新建一个项目,编写好代码后使用编译器的run报错,手动执行go run CODE就没问题。详细报错信息:package Projectname is not in GOROOT (C:\Program Files\Go\src\Projectname)Compilation finished with exit code 1原因分析:因为它是报需要寻找GOROOT下的包,应该是路径问题,或者环境设置问题,输入go en转载 2021-03-09 13:59:53 · 4493 阅读 · 0 评论