
Go语言
文章平均质量分 66
sanqima
这个作者很懒,什么都没留下…
展开
-
vscode里安装Go插件和配置Go环境
vscode是一款跨平台、轻量级、插件多的开源IDE,在vscode不仅可以配置C/C++、Python、R、Ruby等语言的环境,还可以配置Go语言的环境。这里介绍在vscode里安装Go语言的插件和配置Go语言环境,系统是Win10 64位。原创 2023-07-31 23:25:35 · 32016 阅读 · 6 评论 -
go语言设置GOROOT、GOPATH、GOProxy等属性
这里介绍在Mac系统上,设置go语言的GOROOT、GOPATH、GOProxy等属性。1 设置GOROOT和GOPATH GOROOT默认为/usr/local/go,不用修改。 GOPATH默认为/usr/local/gocode,可改成自己的工程路径,比如, /Users/apple/Documents/myProject/godemo,如图(1)所示。## 在~/.bash_profile里的添加GOROOT、GOPATH变量vi ~/.bash_profileex原创 2021-12-31 11:18:58 · 10391 阅读 · 1 评论 -
Fibonacci斐波那契数列 C++或go实现
Fibonacci斐波那契数列,也叫兔子数列,从第3项开始,每一项是前2项之和。斐波那契数列的前几项,依次为:0,1,1,2,3,5,8,21,34,...,下面介绍用C++或go来计算斐波那契数列。原创 2021-09-11 12:55:47 · 1194 阅读 · 0 评论 -
求1!+2!+3!+...+20! go语言实现
n的阶乘可以用一个for循环来求解,前n个数的阶乘相加,也可以用一个for循环来遍历,则求前n个数的阶乘之和,就需要2个for循环。原创 2021-09-11 08:42:26 · 446 阅读 · 1 评论 -
go下载指定版本的依赖包
在go语言开发中,要下载各种各样的依赖包,这些依赖包版本有的以vX.YY.ZZ结尾,有的以v0.0.0-20160315200505-970db520ece7结尾。这里以下载github.com/btcsuite/btcd v0.21.0-beta版本为例,进行说明。原创 2021-08-26 23:21:51 · 6860 阅读 · 1 评论 -
fabric go语言链码打包并在其他Peer节点部署
在fabric中,当链码编译通过后,需要将其打包成.out、.cc结尾的package包,供其他的peer节点使用,使用的命令为peer chaincode package XXX。下面,介绍将fabric-samples/chaincode-docker-devmode/chaincode/fabtoken/testToken的golang工程打包的方法。原创 2021-08-15 10:14:02 · 1492 阅读 · 0 评论 -
解决“proxy.golang.org timeout“问题
使用go拉取依赖包时,有时会出现"proxy.golang.org timeout"现象,可以通过重新设置另外一条goproxy路径,来修复超时问题。原创 2021-08-12 15:39:42 · 2317 阅读 · 0 评论 -
Linux平台安装go并配置go环境
go语言是一种开源的、语法精简的静态编程语言,它的开源社区比较庞大,应用场景非常广范。可以用于系统监控、容器技术(Docker)、大数据、存储技术、分布式系统(Hyperledger Fabric)、消息系统(Kafka客户端)、服务器管理、安全工具、Web工具等。这里介绍在Linux上安装并配置go。1、下载go安装包 到GoLang中国,下载Go语言安装包。 图(1) 在Achived versions里,选择go 1.15.6下载 解压该安装包tar -C /us原创 2021-02-04 08:35:44 · 3422 阅读 · 0 评论 -
Linux平台安装GoLand
GoLand是一个专门用来进行go语言进行开发的IDE,它支持Windows、Apple和Linux这3种平台,下面介绍在Linux平台上安装GoLand。1、下载goland 到jetbrains官网下载golandhttps://www.jetbrains.com/go/download/#section=linux 得到goland-2020.3.tar.gz2、将goland-2020.3.tar.gz解压到/usr/local目录下 切换到root权限,进行原创 2021-02-04 07:57:44 · 4546 阅读 · 0 评论 -
设置goland里的行间距
在goLand软件里,设置行间距的地方有3个,这些地方都需要修改。1、设置IDE界面上的行间距 点击goLand工具栏上的[File] -->Settings --> Editor -->General -->Font --> Line spacing: 1.0图(1) 设置IDE界面上的行间距 2、设置代码里的行间距 点击goLand工具栏上的[File] -->Settings --> Editor -->Color S原创 2020-12-17 08:23:09 · 801 阅读 · 0 评论 -
解决“cannot use logging.INFO (type logging.Level) “问题
在Go编程中,有时会遇到"cannot use logging.INFO (type logging.Level) "问题。 出现该问题的原因是,logging.INFO这个变量在一个枚举变量中,而这个枚举变量没有被当前的包所识别,把loggin.INFO改成它实际对应的值即可。 解决方法,如下: logging.INFO 改为 3 即可。比如, golog.SetAllLoggers(gologging.INFO) 报错改成 golog.SetAllLo原创 2020-12-16 18:42:41 · 606 阅读 · 0 评论 -
解决“strconv.Atoi parsing XXX \r“问题
在使用go-libp2p编程时,有时候遇到strconv.Atoi: parsing “70 \r”: invalid syntax,如图(1)所示:图(1) strconv.Atoi 报错 出现这个问题的原因时,win10平台在你按回车之后,会在参数默认加上\r\n作为换行符,而你的代码只处理了\n的这种情况,没有考虑\r\n这种情况。 解决方法如下: //老代码 sendData = strings.Replace(sendData, "\n", "", -原创 2020-12-16 18:28:06 · 10545 阅读 · 0 评论 -
设置goland的主题、字体和背景颜色
goland是一个专门用来进行go语言开发的IDE,使用非常方便。下面介绍goland 2020里的主题与字体设置。1、主题设置 推荐使用Darcula主题,该主题的颜色对比度清晰、变量和标志也非常好辨认,如图(1)所示。 点击goland工具栏上的[File]–> Appearance & Behavior --> Appearance --> Darcula图(1) 选中Darcula主题 2、字体设置2.1 下载JetBrains Mon原创 2020-12-11 21:26:44 · 24342 阅读 · 0 评论 -
win10平台配置go-sqlite3
在win10平台上,go-sqlite3需要SQLite3的动态链接库、GCC编译器和go-sqlite3源码包。下面介绍在win10 64位上配置go-sqlite3,步骤如下:一、下载相关文件下载sqlite-dll-win32-x86-XXX.zip下载GCC 64位 编译器,比如MinGW-W64 GCC-8.1下载go-sqlite3源码包1.1 在SQLite官网,下载sqlite-dll-win32-x86-XXX.zip,解压后,将里面的*.dll全部拷贝到C:\Wind原创 2020-10-05 19:06:21 · 2105 阅读 · 0 评论 -
Goland 2020或2019软件版本去掉a...或fmt...提示
Goland是JetBrians公司开发一个专门用来go编程的IDE工具。下面介绍,去掉代码里a…或fmt…提示的方法。一、针对Goland 2020以上版本 去掉Go语言提示的方法点击GoLand菜单栏上的[File] --> Setttings --> Editor --> InIay Hints–> Go --> 去掉 Show parameter hits前面的√即可,如图(1)所示:图(1) v2020版本里,在Inlay Hints/ Go原创 2020-10-05 11:47:01 · 1180 阅读 · 1 评论 -
Go语言中的普通锁Mutex和读写锁RWMutex
一、普通锁Mutex1.1 原型type Mutex struct { state int32 sema uint32}Mutex是⼀个互斥锁,可以创建为其他结构体的字段;零值为解锁状态。Mutex类型的锁和线程⽆关,可以由不同的线程加锁和解锁。1.2 Mutex中的方法func (m *Mutex) Lock()Lock⽅法锁住m,如果m已经加锁,则阻塞直到m解锁。func (m *Mutex) Unlock()Unlock⽅法解锁m,如果m未加锁会导致运⾏时错误。原创 2020-10-04 17:35:04 · 630 阅读 · 0 评论 -
Go语言中的条件变量Cond
一、条件变量Cond的定义Go语言里的条件变量,是一个结构体,它包括对应的方法和属性字段。Cond实现了⼀个条件变量,⼀个线程集合地,供线程等待或者宣布某事件的发⽣。每个Cond实例都有⼀个相关的锁(⼀般是*Mutex或 *RWMutex类型的值),它必须在改变条件时或者调⽤Wait⽅法时保持锁定。 Cond可以创建为其他结构体的字段, Cond在开始使⽤后不能被拷⻉。 条件变量:sync.Cond,多个goroutine等待或接受通知的集合地。原型type Cond struct {原创 2020-10-04 17:12:45 · 2559 阅读 · 0 评论 -
Go语言中的同步等待组WaitGroup
在Go语言的sync包中,提供了基本的同步单元,如互斥锁。除了Once和WaitGroup类型,⼤部分都是适⽤于低⽔平程序线程,⾼⽔平的同步使⽤channel通信更好⼀些。 我们可以通过WaitGroup里的wait()方法,来阻塞主线程,直到其他子线程或协程运行完毕,再回到主线程。WaitGroup同步等待组type WaitGroup struct { noCopy noCopy state1 [12]byte sema uint32} WaitGr原创 2020-10-04 16:27:09 · 758 阅读 · 0 评论 -
Http各种状态码的含义
HTTP状态码(HTTP Status Code) 一些常见的状态码为:200 服务器成功返回页面301 永久移动,请求的网页已经永久移动的新的地址,请使用新的地址进行访问,原来的地址不可用。302 临时移动,请求的网页临时移动到其他问题,原来的地址仍然可以使用。403 服务器拒绝请求404 请求的网页不存在500 服务器内部错误一、1xx (临时响应) 表示临时响应,并需要请求者继续执⾏操作的状态代码。100 (继续) 请求者应当继续提出请求。 服务器返回此代原创 2020-10-03 16:25:17 · 505 阅读 · 0 评论 -
Go语言中的defer延时机制
在Go语言中,有时候需要对某个方法、函数或者参数进行延时处理,这时就需要defer关键字。defer延时的作用一、延迟函数可以在函数中添加多个defer语句。1)当函数执⾏到最后时,这些defer语句会按照逆序执⾏,最后该函数返回。特别是当你在进⾏⼀些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题;2)如果有很多调⽤defer,那么defer是采⽤后进先出模式;3)在离开所在的⽅法时,执⾏(报错的时候也会执⾏) 案例1. 在原创 2020-10-03 15:41:12 · 421 阅读 · 0 评论 -
Go语言中的错误处理
错误指程序中出现不正常的情况,从⽽导致程序⽆法正常执⾏。error处理概述Go语⾔中没有try…catchGo 语⾔通过内置的错误类型提供了⾮常简单的错误处理机制;错误值可以存储在变量中,通过函数中返回;如果⼀个函数或⽅法返回⼀个错误,按照惯例,它必须是函数返回的最后⼀个值;处理错误的惯⽤⽅式是将返回的错误与nil进⾏⽐较;nil值表示没有发⽣错误,⽽⾮nil值表示出现错误;如果不是nil,需打印输出错误。error错误类型的本质error本质上是⼀个接⼝类型,其中包含⼀个原创 2020-10-03 11:02:39 · 471 阅读 · 0 评论 -
Linux中的drwx-权限描述符
在Linux系统中,对文件的访问权限有3种:可读、可写、可执行,分别用字母r、w、x表示;若该文件为目录则用d标志,否则用-标志。 文件的权限描述符,由10个字母组成。第⼀符号表示文件的类型。如果是-表示⽂件,如果是d表示⽬录。后面的9个字符表示3组权限,分别为⽂件所属⽤户owner的权限,⽂件所属⽤户组group的权限,其他⼈others的权限;r 表示读权限, w表示写权限, x表示执⾏权限;若没有该权限,则用-标志;还可以⽤8进制表示法:1)r 42) w 23)原创 2020-10-03 10:07:53 · 31300 阅读 · 0 评论 -
Go语言中的接口对象转型
Go语言中接口对象转型,有2种方式。方式一instance, ok := 接⼝对象.(实际类型)如果该接⼝对象是对应的实际类型,那么instance就是转型之后对象, ok的值为true配合if … else if…语句使⽤方式二接⼝对象.(type)配合switch…case语句使⽤ 案例如下://myInterfaceChg.go// myInterfaceChg project main.gopackage mainimport ( "fmt" "原创 2020-10-03 08:49:47 · 1152 阅读 · 0 评论 -
Go语言中的空接口
空接口的概念该接⼝中没有任何的⽅法,任意类型都可以实现该接⼝。空接口的定义包含0个method的interface。type xxx interface {}空接口的使用场景⽤空接⼝表示任意数据类型,类似于java中的object。println的参数就是空接⼝;定义⼀个map: key是string, value是任意数据类型;定义⼀个切⽚,其中存储任意类型的数据。 案例如下://myInterfaceNull.go// myInterfaceNull proje原创 2020-10-03 08:17:08 · 1035 阅读 · 0 评论 -
Go语言中interface接口的使用
在⾯向对象语⾔中,接⼝⽤于定义对象的⾏为。接⼝只指定对象应该做什么,但具体怎么做,接口不用管,实现细节交给里面的struct就可以了。在Go语⾔中,接⼝是⼀组⽅法Methods[]签名。接⼝只指定了struct应该具有的⽅法;当某个struct为接⼝中的所有⽅法提供了具体的实现细节时,这个struct就被称为实现了该接⼝;接⼝定义了⼀组⽅法,如果某个对象实现了该接⼝的所有⽅法,则此对象就实现了该接⼝。Go语⾔的struct都是隐式实现接⼝的。任何定义了接⼝中所有⽅法的类型都被称为隐原创 2020-10-02 17:08:46 · 913 阅读 · 1 评论 -
Go语言中method方法的继承与重写
method也叫方法,Go语言中支持method的继承和重写。一、method继承 method是可以继承的,如果匿名字段实现了⼀个method,那么包含这个匿名字段的struct也能调⽤该匿名结构体中的method。 案例如下://myMethod02.go// myMehthodJicheng2 project main.gopackage mainimport ( "fmt")type Human struct { name, phone string原创 2020-10-02 16:31:24 · 2604 阅读 · 1 评论 -
Go语言中方法与函数的区别
Go语⾔,同时有函数和⽅法,⽅法的本质是函数,但是⽅法和函数⼜具有不同点。不同点:含义不同 1.1)函数function是⼀段具有独⽴功能的代码,可以被反复多次调⽤,从⽽实现代码复⽤。⽽⽅法method是⼀个类的⾏为功能,只有该类的对象才能调⽤。⽅法有接受者,⽽函数⽆接受者2.1)Go语⾔的⽅法method是⼀种作⽤于特定类型变量的函数。这种特定类型变量叫做Receiver(接受者、接收者、接收器);2.2)接受者的概念类似于传统⾯向对象语⾔中的this或self关键字;...原创 2020-10-02 16:05:56 · 1629 阅读 · 0 评论 -
Go语言使用结构体嵌套来模拟继承
Go语言不像C++、JAVA有继承关键字,Go不直接支持继承,但是我们可以使用结构体嵌套来模拟继承,即间接支持继承。继承的作用:避免重复代码;扩展类的功能,继承的含义:⼦类可以有⾃⼰的属性和⽅法,也可以重写⽗类已有的⽅法;⼦类可以直接访问⽗类所有的属性和⽅法。继承的实现途径采⽤匿名字段的形式就是模拟继承关系,⽽模拟聚合关系时⼀定要采⽤有名字的结构体作为字段;在结构体中属于匿名结构体的字段称为提升字段,因为它们可以被访问,就好像它们属于拥有匿名结构字段的结构⼀样;换句话说原创 2020-10-02 15:09:38 · 518 阅读 · 0 评论 -
Go语言中切片slice的声明与使用
一、切片slice的定义 Go语言中的切片,是一种动态数组,它是对数组的扩展。与数组相⽐,切⽚的⻓度是不固定的,可以追加元素,在追加时可能使切⽚的容量增⼤。切⽚本身没有任何数据,它们只是对现有数组的引⽤。切⽚与数组相⽐,不需要设定⻓度,在[]中不⽤设定值,相对来说⽐较⾃由。从概念上⾯来说slice像⼀个结构体,这个结构体包含了三个元素:1)指针,指向数组中slice指定的开始位置;2)⻓度,即slice的⻓度;3)最⼤⻓度,也就是slice开始位置到数组的最后位置的⻓度。二、切片原创 2020-10-01 16:14:09 · 6359 阅读 · 0 评论 -
Go语言中数组的声明与使用
一、数组定义 1.1 Go 语⾔中提供了数组这种数据结构。 数组是具有相同类型的⼀组⻓度固定的数据序列,这种类型可以是任意的基本数据类型或复合数据类型及⾃定义类Go内置容器——数组和切⽚型。 1.2 数组元素可以通过索引下标(位置)来读取或者修改元素数据。索引从0开始,第⼀个元素索引为 0,第⼆个索引为 1,以此类推。数组的下标取值范围是从0开始,到⻓度减1。 1.3 数组⼀旦定义后,其⼤⼩不能更改。二、数组的语法2.1 声明数组 Go 语⾔数组声明需要指定元素类型及元素原创 2020-10-01 14:44:43 · 7968 阅读 · 0 评论 -
win10平台下Go语言的IDE和环境配置
Go语言 是谷歌推出的一款全新的编程语言,可以在不损失应用程序性能的情况下极大的降低代码的复杂性,还可以发挥多核处理器同步多工的优点,并可解决面向对象程序设计的麻烦,并帮助程序设计师处理琐碎但重要的内存管理问题,相比于其他编程语言,简洁、快速、安全、并行、有趣、开源、内存管理、数组安全、编译迅速是其特色。下面介绍在win10上安装Go语言,以及配置Go语言的IDE和环境变量。原创 2020-07-18 19:29:21 · 2898 阅读 · 0 评论