Go语言中文网 为您找到相关结果 5578

Golang——变量和常量

关键字(25个) break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 保留字(37个) append bool byte cap close complex complex64 complex128 uint16 copy false float32 float64 imag int int8 int16 uint32 int32 int64 iota len make new nil panic uint64 print println ...阅读全文

博文 2020-05-10 19:33:10 Cici冬雪

解决 open /usr/local/go/pkg/darwin_amd64/runtime/cgo.a: permission denied

话说今天新买一台Mac电脑,伴随着开箱的兴奋,哼着喜羊羊美羊羊的优雅小调,开始有条不紊的配置各种开发环境,轻车熟路的安装Go SDK和Golang IDE开发环境,配置好各种环境变量后,打开写了一个的项目,随手按下了Command + R键,眼角微眯嘴角微微上翘,准备享受项目极速编译的快感,然后在那一刹那,脸上的笑容僵硬了,只见一行错误跃然出现在屏幕上: go build runtime/cgo: copying /Users/richard.tao/Library/Caches/go-build/54/54a79ca4b80c8315704d77ca3fccec80e627d58e2382b556425a53cad5340341-d: open /usr/local/go/pkg/ 揉了揉...阅读全文

Golang筑基 ——函数

定义 golang函数的定义: func 函数名(参数) 返回参数{ //函数体 } 特点 在golang中至少有一个main函数 每个包只能有一个main函数 golang函数的功能相比于C/C++更便捷,golang函数可以返回多个值,这极大地方便了使用 1. golang函数可以返回多个值 下面的函数返回了int 和error两个值,利用这个特性我们就可以判断函数内的执行情况,并做出决策,终止运行或者返回错误。 func GetData() (int, error){ return 0, nil } 2. golang的函数均包含 func 关键字 3. golang支持匿名函数(即闭包) 匿名函数就是没有名字的函数,其用途有以下几种: 1.匿名函数赋给变量 // 匿名函数赋给变量 d...阅读全文

博文 2020-06-30 03:32:51 技术修仙

Golang Tips

Go的数组只能有固定的长度,传入变量作为数组长度时,只能创建为定义了size的切片 length := 5 array := [length]int // error: non-constant array bound length array := make([]int, length) Go没有内置的比较整数大笑的方法,需要自己实现 func max(a int, b int) int { if a >= b { return a } else { return b } } Go没有内置的判断array或map是否存在某一个元素的方法,需要通过判断普通的get的error实现 // implement array/list contains func contains(array []i...阅读全文

博文 2020-05-16 02:32:43 Lyudmilalala

[GO语言]Golang的切片slice深入理解

需要说明,slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案。 1. 切片:切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。 2. 切片的长度可以改变,因此,切片是一个可变的数组。 3. 切片遍历方式和数组一样,可以用len()求长度。表示可用元素数量,读写操作不能超过该限制。 4. cap可以求出slice最大扩张容量,不能超出数组限制。0 <= len(slice) <= len(array),其中array是slice引用的数组。 5. 切片的定义:var 变量名 []类型,比如 var str []string var arr []int。 6. 如果 slice == nil,那么 len、cap 结果都等于 0。 切片初始...阅读全文

博文 2020-05-15 17:34:07 小龙in武汉

有随机指针的单链表的复制

一个单链表,每一个节点除了会指向下一个节点之外,还有一个随机指针,随机的指向该链表本节点之外的另一个节点比如 1------>2------>3------>4------nil然后随机指针1------>32------>43------>24------>1复制逻辑第一步 先在原始链表每一个节点后面创建一个取值跟其一样的节点让链表变成这样1--->1'--->2--->2'--->3--->3'--->4--->4'---nil第二步 在完成了第一步之后分析发现比如想让1‘的随机指向的是3’(因为1随机指向3)那么在新链表中,1是node就有下面的公式node(1).next(1‘).rand = node(1).rand(3).next(3') 利用这个公式就能让复制出的1‘的rand...阅读全文

博文 2020-10-17 08:32:35 润雨冰雪

带你学够浪:Go语言基础系列-环境配置和 Hello world

前面几周陆陆续续写了一些后端技术的文章,包括数据库、微服务、内存管理等等,我比较倾向于成体系的学习,所以数据库和微服务还有后续系列文章补充。 最近工作上比较多的 Golang 编程,现在很多互联网公司都在转向 Golang 开发,所以打算写一写有关 Go 语言学习的系列文章,目标是从 Go 基础到进阶输出一系列文章,沉淀下这些知识同时也给大家做参考,力求做到通俗易懂,即使你是 Golang 小白也能看懂,如果你是老手也能温故知新。 本文将要和你分享 linux 下安装 Golang 环境,并且讲解如何通过配置 VSCode 远程开发调试 Golang 程序。 下载源码 你可以用系统自带的包管理工具比如 yum 或 apt-get 来安装Golang开发环境。不过,为了通用性,我选择通过源码的...阅读全文

博文 2020-05-21 19:33:21 柠檬橙1024

go 学习笔记

这篇文章就总结一下go 的细节 具体参考: http://c.biancheng.net/golang/ 但是里面有写 收费章节(其实他也是抄的别的,暂时没找到源头) 这个是 gitbook 的文档,但是好像有点岁月的痕迹 https://wizardforcel.gitbooks.io/gopl-zh/preface.html 数组声明 var 数组变量名 [元素数量]Type 数组的元素数量,可以是一个表达式,但最终通过编译期计算的结果必须是整型数值,元素数量不能含有到运行时才能确认大小的数值 func get_array_length() int { return 3 } func main() { length := get_array_length() fmt.Println(le...阅读全文

博文 2020-06-28 09:32:42 天空蓝雨

C/C++符号隐藏与依赖管理(四):依赖管理

一个项目中,除了非常底层的软件模块外,大多数模块都需要其它的模块的协助才能完成功能,这需要借助模块之间的依赖管理能力。 依赖管理包含如何控制模块间的最小化依赖,如何发布自己的API,如何获取别人的API,以及如何对依赖关系进行追溯和控制,包括解决冲突。 依赖管理不仅决定了模块间的协作方式,还决定了单一模块能否高效的独立开发、构建和测试,以及能否独立的进行发布。 前文我们总结了每个模块如何做好自己的符号隐藏与头文件设计,那么模块之间的依赖又要如何管理和维护呢? 为了回答这个问题,我们先来审视下不同开发阶段对于所依赖的其它模块到底需要哪些东西。 在写代码或者阅读代码的时候,我们需要看到当前模块所依赖的其它模块的外部头文件。只有这样代码才能不缺失符号声明,IDE才能正常解析、跳转和提醒,我们才能正...阅读全文

博文 2020-03-30 23:33:24 MagicBowen

Mac安装Go环境

一、下载 去Golang官网 )下载需要的版本,这里直接下载苹果版的pkg 二、 安装 直接双击运行pkg,在弹出的安装页面直接安装就行了。 三、测试 输入go version测试go版本。用go env可以查看go环境的变量 默认安装的 GOROOT="/usr/local/go" GOPATH="/Users/admin/go" > go version go version go1.14.3 darwin/amd64 >go env GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/Users/admin/Library/Caches/go-build" GOENV="/Users/admin/Library/Application Su...阅读全文

博文 2020-05-29 07:32:42 过愙

(1) Golang的初识

一、Go语言快速开发入门 1、需求 要求开发一个hello.go程序,可以输出hello,world 2、开发的步骤 go语言项目的目录结构的处理 3、Golang的执行流程 4、Go语言开发的注意事项 (1)Go源程序以".go"为扩展名; (2)Go应用程序的执行入口是main()函数; (3)Go语言严格区分大小写; (4)Go方法由一条条语句构成,每个语句后不需要分号(Go语言会在每行后面自动加入分号); (5)一行只能写一个语句; (6)Import的包或者定义的变量没有使用,编译无法通过...阅读全文

博文 2020-07-22 14:33:02 真是个点子王

(二)Golang的变量

为什么需要变量: 变量是程序的基本组成单位不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位,比如:下面代码中sum、sub都是变量。 func getVal(num1 int, num2 int) (int, int) { sum := num1 + mum2 sub := num1 - num2 return sum, sub } func main() { sum, sub := getVal(30, 30) fmt.Println("sum=", sum, "sub=", sub) sum2, _ := getVal(10, 30) fmt.Println("sum=", sum2) } 变量的介绍: 变量的概念变量相当于内存中一个数据存储空间的表示,可以把变量看做是一...阅读全文

博文 2019-08-15 23:33:48 运维路

centos7上安装Golang

go语言安装: 1、下载,解压go部署包 1-go安装包解压.png 2、配置环境变量 export GOHOME=/usr/local/go export GOROOT=$GOHOME export GOPATH=/opt/go/gopath export PATH=$PATH:$JAVA_HOME/bin:$GOHOME/bin:$GOROOT/bin:$GOPATH/bin 2-配置go环境变量.png 3、环境变量生效 source /etc/profile 4、查看版本 go version 5、在$GOPATH目录下,创建src目录 make -p /opt/go/gopath/sr...阅读全文

Go学习笔记-面向对象struct成员变量

结构体`struct`可以用来描述一组数据值,这组值的本质即可以是原始的,也可以是非原始的。是用户自定义的类型,它代表若干字段的集合,可以用于描述一个实体对象,类似`java`,`php`中的`class`,是`golang`面向对象编程的基础类型。 今天我们先来看看`golang`中的成员变量的实现。 >基本的属性(成员变量) ``` type Teacher struct { Name string age int Sex string } func Create() Teacher { cang := Teacher{Name:"teacher cang",age:20,Sex:"woman"} return cang } ``` 对于在上面结构体`teacher`其实我们可以把它看成...阅读全文

博文 2020-01-14 21:48:06 rundaisc

defer ,panic,recover

defer的执行顺序 多个defer出现的时候,它是一个“栈”的关系,也就是先进后出。一个函数中,写在前面的defer会比写在后面的defer调用的晚。 package main import "fmt" func main() { defer func1() defer func2() defer func3() } func func1() { fmt.Println("A") } func func2() { fmt.Println("B") } func func3() { fmt.Println("C") } //输出结果:C B A defer和return的先后顺序 return之后的语句先执行,defer后的语句后执行。 package main import "fmt" f...阅读全文

博文 2020-04-26 13:33:11 普朗tong

golang入门到放弃:1.变量和基本类型

变量的定义和声明 ``` var a int = 123 //定义 var b int //声明 ``` 定义:声明的同时给变量赋值了 声明:只是告诉了变量类型,没有赋值 自动推导类型的精髓 语法 tmp := "ccc" 定义的时候使用 省掉了var 关键字来声明如 var PI float64 =3.14159 可以用 PI:=3.14159 来代替, 自动推导类型会根据变量第一次赋值的情况判断数据类型并分配内存空间, 之后就不允许再更改变量的类型了 多重赋值 ``` a,b,c,d:=2,3.14159,"hello",true fmt.Println(a,b,c,d) //2 3.14159 hello true ``` 在自动推导类型的基础上一次定义多个变量 交换a,b值的两种写法...阅读全文

博文 2020-07-02 15:32:50 不留余白

duck typing

像鸭子走路,像鸭子叫,那么就是鸭子 描述事物外部行为而非内部结构 严格说go属于结构化类型系统,类似duck typing python c++ 中duck typing (只要retriever 具有get方法即可)但是编译运行才知道错误 def download(retriever r): r.get("www.baidu.com") java 中传入参数必须要实现某个接口,不是duck typing 接口定义 download (使用者) retriever(使用者) golang中接口由使用者定义 typpe assertion n, p := reader.Shape() point := p.(*shp.Point) x := point.X y := point.Y 接口变量里...阅读全文

博文 2020-06-08 01:33:14 我真是刚的不像话

Go语言基础 - 变量与常量

一、变量 程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。 1. 声明 // 标准声明:var 变量名 变量类型 var name string // 批量声明: var ( a string b int ) 2. 初始化 var name string = "Go" // 类型推导: var name = "Go" // 一次初始化多个变量: var name, age = "Go", 10 // 短变量声明: shortName := "Go" // 匿名变量...阅读全文

博文 2020-04-08 16:32:44 不留烦

Golang标准库——go(4)

token types token token包定义代表Go编程语言的词法标记的常量以及对标记的基本操作(打印,谓词)。 Constants const ( LowestPrec = 0 // non-operators UnaryPrec = 6 HighestPrec = 7 ) 一组用于基于优先级的表达式解析的常量。 非运算符的优先级最低,其后依次是从优先级1开始到一元运算符的运算符。 最高优先级用作选择器,索引以及其他运算符和定界符标记的“包罗万象”优先级。 type File type File struct { // contains filtered or unexported fields } 文件是属于FileSet的文件的句柄。 文件具有名称,大小和行偏移量表。 func...阅读全文

博文 2020-10-11 17:32:39 DevilRoshan

消息队列 NSQ 源码学习笔记 (二)

> NSQ 消息队列实现消息落地使用的是 FIFO 队列。 > 实现为 **diskqueue** , 使用包 `github.com/nsqio/go-diskqueue` ,本文主要对 `diskqueue`的实现做介绍。 ## 功能定位 - 在NSQ 中, diskqueue 是一个实例化的 BackendQueue, 用于**保存在内存中放不下的消息**。使用场景如Topic 队列中的消息,Channel 队列中的消息 - 实现的功能是一个FIFO的队列,实现如下功能: - **支持消息的插入、清空、删除、关闭操作** - **可以返回队列的长度**(写和读偏移的距离) - 具有读写功能,FIFO 的队列 ## diskqueue 的实现 BackendQue...阅读全文

博文 2020-04-09 11:07:18 lpflpf

Go 语言学习之运算符

01 算术运算符算术运算符有加号(+)、减号(-)、乘号(*)、除号(/)、取余(%),我们声明两个变量 a 和 b,并分别赋值 10 和 5,通过代码,我们演示算术运算符的用法。func main() { a := 10 b := 5 fmt.Println("a + b = ", a+b) fmt.Println("a - b = ", a-b) fmt.Println("a * b = ", a*b) fmt.Println("a / b = ", a/b) fmt.Println("a % b = ", a%b) }02 ++ 和 --自增和自减不是运算符,只能作为独立语句使用,不能用于表达式,不能放在变量名前面使用。通过代码,我们演示 ++ 和 -- 的用法。func main()...阅读全文

博文 2020-08-06 12:36:59 frank

(二) Golang变量(2) - 数据类型的基本介绍

3.程序中"+"的应用 当左右两边都是数值型时,则做加法运算 当左右两边都是字符串,则做字符串拼接 i1, i2 := 2, 4 i3 := i1 + i2 fmt.Println("加法相加", i3) str1, str2 := "wang", "peng" str3 := str1 + str2 fmt.Println("字符拼接", str3) 结果 加法相加 6 字符拼接 wangpeng 4.数据类型的基本介绍 数据类型的基本介...阅读全文

博文 2020-05-19 15:32:49 21号新秀_邓肯

Golang——map

Map是无序的、基于key-value的数据结构,内部使用散列表hash实现。 Map是引用类型,声明时是nil,必须初始化才能使用。 map[keytype]valuetype map类型变量默认初始值是nil,需要使用make()函数进行初始化 make(map[keytype]valuetype, [cap]) map声明和初始化 func main() { //声明 var a map[string]int fmt.Println(a == nil) //true //初始化,容量可以写,建议编程时候加上 a = make(map[string]int, 10) fmt.Println(a == nil) //false // 声明map并初始化 b := map[int]strin...阅读全文

博文 2020-05-21 23:32:46 Cici冬雪

interface golang

一个interface{}类型的变量包含了2个指针,一个指针指向值的类型,另外一个指针指向实际的值对一个interface{}类型的nil变量来说,它的两个指针都是0;但是var a *State传进去后,指向的类型的指针不为0了,因为有类型了, 所以比较为false。 interface 类型比较, 要是 两个指针都相等, 才能相...阅读全文

博文 2020-01-15 09:32:41 sphinxLike

12. Go 语言流程控制:defer 延迟语句

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 今天是最后一篇讲控制流程了,内容是 defer 延迟语句,这个在其他编程语言里好像没有...阅读全文

博文 2020-05-07 11:36:18 王一白

Go学习笔记-面向对象struct成员变量

结构体struct可以用来描述一组数据值,这组值的本质即可以是原始的,也可以是非原始的。是用户自定义的类型,它代表若干字段的集合,可以用于描述一个实体对象,类似java,php中的class,是golang面向对象编程的基础类型。 今天我们先来看看golang中的成员变量的实现。 基本的属性(成员变量) type Teacher struct { Name string age int Sex string } func Create() Teacher { cang := Teacher{Name:"teacher cang",age:20,Sex:"woman"} return cang } 对于在上面结构体teacher其实我们可以把它看成一个class而Name,Sex是可以被外部(...阅读全文

博文 2019-12-29 22:32:43 旧梦发癫

Golang 基础数据类型(二)

强制类型数据转换 类型转换用于将一种数据类型的变量转换为另外一种类型的变量。Go语言类型转换的基本格式如下: type_name(expression) 在做强制类型转换时,需要特别注意数据长度被截断而发生的数据精度损失(比如将浮点型转换为整型)与值溢出(值超过转换目标类型的值范围时)。 func main() { num := 5 num1 := 11 num2 := float32(num) //把整型转换成浮点型 num3 := float32(num1) mean := num1 / num //原来的运算 mean1 := num3 / num2 //转换后的运算 fmt.Println("没有经过类型转换的值:", mean) fmt.Println("经过类型转换的值:", m...阅读全文

博文 2020-06-03 13:32:42 sunlingbot

CentOS7安装Go环境

一、下载go 执行wget https://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.gz或者下载tar包到本地再上传到服务器; 注:Go下载地址:go1.10.1.linux-amd64.tar.gz 建立Go目录:mkdir /go/work/go 建立GoPath目录:mkdir /go/work/gopath 解压缩:mv go1.10.1.linux-amd64.tar.gz /go/work/; tar -xvf go1.10.1.linux-amd64.tar.gz 进入解压目录:cd /go/work/go 二、设置环境变量 配置环境变量vim /etc/profile export GOROOT=/go/work/...阅读全文

博文 2020-08-18 16:32:54 虾米咬小米

一文搞定macOS下Go语言开发环境的搭建

1.下载安装 Go语言 下载地址:https://golang.google.cn/dl/ image.png 下载完成后,直接双击 文件进行安装 image.png 一路点击next即可 image.png 最后在终端执行 go version 命令,如过能获取到版本信息则说明安装成功了 2.配置环境变量 在终端输入go env会打印出go 相关的所有环境变量。 这些环境变量,仅设置下面这两个就足够了 一个是GO111MODULE 设置为 on,表示使用 go modules 模式 $ go env -w GO111MODULE=on 一个是开启代理,防止下载包失败(前面可能你已经设置过) $ go env -w GOPROXY=https://goproxy.cn,direct 3. 配...阅读全文

博文 2020-10-08 20:32:46 老朱别问

7. Go 语言数据类型:指针

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 0. 什么是指针 当我们定义一个变量 name var name string = "Go编程时光" 此时,name 是变量名,它只是编程语言中方便程序员编写和理解代码的一个标签。 当我们访问这个标签时,机算机会返回给我们它指向的内存地址里存储的值:Go编程时光。 出于某些需要,我...阅读全文

博文 2020-04-29 08:32:44 Python编程时光

linux下C++多线程并发之原子操作与无锁编程

一、何为原子操作原子操作:顾名思义就是不可分割的操作,该操作只存在未开始和已完成两种状态,不存在中间状态;原子类型:原子库中定义的数据类型,对这些类型的所有操作都是原子的,包括通过原子类模板std::atomic< T >实例化的数据类型,也都是支持原子操作的。二、如何使用原子类型2.1 原子库atomic支持的原子操作原子库< atomic >中提供了一些基本原子类型,也可以通过原子类模板实例化一个原子对象,下面列出一些基本原子类型及相应的特化模板如下: 对原子类型的访问,最主要的就是读和写,但原子库提供的对应原子操作是load()与store(val)。原子类型支持的原子操作如下: 2.2 原子操作中的内存访问模型原子操作保证了对数据的访问只有未开始和已完成两种状态,不会访问到中间状态,...阅读全文

博文 2020-09-21 21:32:40 linux大本营

并发编程的数据竞争问题以及解决之道

Go语言以容易进行并发编程而闻名,但是如果稍不注意,并发程序可能导致的数据竞争问题(data race)就会经常出现在你编写的并发程序的待解决Bug列表中-- 如果你不幸在代码中遇到这种错误,这将是最难调试的错误之一。 今天这篇文章里我们首先来看一个导致数据竞争的示例程序,使用go命令行工具检测程序的竞争情况。然后我们将介绍一些在不改变程序核心逻辑的情况下如何绕过并解决并发情况下的数据竞争问题的方法。最后我们会分析用什么方法解决数据竞争更合理以及留给大家的一个思考题。 本周这篇文章的主旨概要如下: 并发程序的数据竞争问题。 使用go命令行工具检测程序的竞争情况。 解决数据竞争的常用方案。 如何选择解决数据竞争的方案。 一道测试自己并发编程掌握程度的思考题。 数据竞争 要解释什么是数据竞争我们...阅读全文

博文 2020-05-28 12:32:47 Kevin

Go-Flag包文档翻译

golang-flag包文档翻译 flag包实现了命令行参数解析。 代码中仅对注释进行翻译。 使用 使用flag.String()、flag.Bool()、flag.Int()等函数声明命令行参数。 如下示例声明了一个整型参数-flagname,并将信息存储在了指针ip中,类型为*int。 import "flag" var ip = flag.Int("flagname", 123, "help message for flagname") 如果你喜欢,你可以使用Var()这类函数将参数绑定到变量中。 var flagvar int func init(){ flag.IntVat(&flagvar, "flagname", 1234, "help message for flagname...阅读全文

博文 2020-10-11 07:32:39 A_Donga

Go语言常量与变量初识

标识符和关键字 标识符 标识符只能以字母和_组成,并且只能以字母和_开头。 关键字 Go中有25个关键字: break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 变量 变量声明 变量需要先声明,再使用。其语法如下: var name string 其数据类型有: string,字符串 int,整型 bool,布尔型 上面这种是一个变量一个变量的声明,go也有批量声明方式: var ( name string age int isBoy boo...阅读全文

博文 2020-03-16 00:33:13 Uncle_Joker

centos安装golang

下载golang包 golang1.14 https://studygolang.com/dl cd /usr/local/src wget https://studygolang.com/dl/golang/go1.14.1.linux-amd64.tar.gz tar -zxvf go1.14.1.linux-amd64.tar.gz -C /usr/local/ 设置环境变量 vim /etc/profile # 设置golang的环境变量 # 设置GO安装目录 export GOROOT=/usr/local/go # 设置gopath export GOPATH=/home/gopath # 设置gobin export GOBIN=/home/gopath/bin # 设置代理,...阅读全文

博文 2020-03-26 17:40:41 百里江山

RabbitMQ入门1-下载安装

安装erlang rabbitMQ是erlang语言开发的,所以安装的的时候需要erlang环境 yum -y install erlang 测试erlang安装完毕 erl -version 下载地址 http://erlang.org/download/ 下载到本地 wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-generic-unix-3.8.5.tar.xz 解压 tar -xvf rabbitmq-server-generic-unix-3.8.5.tar.xz 移动目录 mv rabbitmq_server-3.8.5 /opt/rabbitmq ...阅读全文

博文 2020-06-20 21:32:41 李昊天

【Go语言入门系列】Go语言工作目录介绍及命令工具的使用

【Go语言入门系列】前面的文章:【保姆级教程】手把手教你进行Go语言环境安装及相关VSCode配置【Go语言入门系列】(八)Go语言是不是面向对象语言?【Go语言入门系列】(九)写这些就是为了搞懂怎么用接口1. GOPATH目录结构在【保姆级教程】手把手教你进行Go语言环境安装及相关VSCode配置一文中已经配置过工作空间GOPATH的环境变量了,并在工作空间中新建了三个目录src、pkg、bin了。那为什么要新建这三个目录呢?这三个目录又有什么作用呢?首先,不管是什么系统或项目,目录的存在肯定是为了使系统或项目的结构更加清晰、更加方便管理,在Go这里也不例外。其次,其实只看名字,就能猜个大概:src目录:即source,用来存放源代码。pkg目录:即package,用来存放编译后的文件。b...阅读全文

博文 2020-10-10 17:32:46 行人观学

【译】实现Raft协议:Part 3 - 持久性和优化

翻译自Eli Bendersky的系列博客,已获得原作者授权。 本文是系列文章中的第一部分,本系列文章旨在介绍Raft分布式一致性协议及其Go语言实现。文章的完整列表如下: 序言:介绍 第一部分:选主 第二部分:指令和日志复制 第三部分:持久性和优化(本文) 在这一部分,我们会添加持久性和一些优化来完善Raft的基础实现。所有代码已上传到这个目录。 持久性 类似Raft这样的一致性算法的目标,就是通过在独立的服务器之间复制任务来创建一个更具高可用性的系统。在此之前,我们主要关注的是网络分区的故障,也就是集群中一些服务器与其它服务器(或客户端)断开了连接。还有另一种失败模式就是崩溃,也就是一台服务器停止工作并重启。 对于其它服务器,这看起来很像网络分区——服务器暂时断开连接,但是对于崩溃服务器...阅读全文

博文 2020-05-06 16:36:27 GuoYaxiang

[Go - Basic] 基本变量类型转换

数字转字符串 import "strconv" int -> string strconv.Itoa(i int) string int64 -> string strconv.FormatInt(i int64, base int) string base = 10 字符串转数字 import "strconv" string -> int strconv.Atoi(s string) (int, error) string -> int64 strconv.ParseInt(s string, base int, bitSize int) (i int64, err error) base = 10 bitSize = 6...阅读全文

Go语言向导: 通过例子学习Golang

什么是Go? Go(也叫Golang)是由Google开发的一款开源的编程语言。它是一款静态编译型语言。Go支持并发编程, 即它允许多个进程同时运行, 这是通过使用通道、协程等实现。Go有垃圾回收机制,它自己实现内存管理并且允许函数的延迟执行。 如何下载以及安装Go 到https://golang.org/dl/下载你操作系统对应的二进制文件。(由于网络原因, 国内下载请前往Go语言中文网, 梯子除外) 第一个Go程序 创建一个名为studyGo的文件夹, 你将会在这个文件夹内创建我们的go程序, Go文件以 .go 后缀名创建, 你可以使用下面的语法运行Go程序。 $ go run main.go 注: go run的go文件所在的package必须为package main, 并且必须包...阅读全文

博文 2020-07-24 08:32:42 心中的日月_pyihe

Go的条件语句「遇到问题该怎么办?先假设、后执行」

IF 条件语句 package main import "fmt" func main() { var A, B int = 520, 1314 if A > B { fmt.Println("A > B") } if A < B { fmt.Println("B < A") } fmt.Println("程序到此运行结束......") } /* 输出: B < A 程序到此运行结束...... */ 复制代码上面我们声明两个 int 变量 A = 520 和 B = 1314 第一个 IF 语句后面跟着的是 A > B,这个结果得出 False,在这里 A 是小于B的,所以括号里的内容不执行 第二个 IF 语句后面跟着的是 A < B,这个结果得出 True,所以执行 IF 括号中的内容...阅读全文

博文 2020-03-30 16:34:22 陈九礼

Go 语言学习笔记 -第3章 基本数据类型

Go 语言学习笔记 -第3章 [toc] 基本数据类型 数值型整数类型 int, int8(1字节), int16(2字节), int32(3字节), int64(4字节); int8范围: -2的七次方 到2的七次方 - 1xxxxxxxxxx uint, uint8, uint16, uint32, unit64, byte uint8范围:0 到2的8次方-1xxxx以此类推 rune ~ 等价int32, 表示一个unicode byte 0~255 浮点类型 float32, float64 字符型:没有专门的字符型,使用byte来保存单个字母字符 布尔型: bool 字符串:string 派生、复杂数据类型 指针数组结构体管道函数切片接口map 备注: 1、查看某个变量的数据类型...阅读全文

Go语言入门系列(六)之再探函数

Go语言入门系列前面的文章:Go语言入门系列(三)之数组和切片Go语言入门系列(四)之map的使用Go语言入门系列(五)之指针和结构体的使用在Go语言入门系列(二)之基础语法总结这篇文章中已经介绍过了Go语言的函数的基本使用,包括声明、参数、返回值。本文再详细介绍一下函数的其他使用。1. 变参Go语言的函数除了支持0个或多个参数,还支持不定数量的参数,即变参。声明方式为:func foo(变参名 ...参数类型) 函数类型 { //函数体 }下面是一个具体的函数,它接收不定数量的int参数,并返回和:package main import "fmt" func add(arg ...int) int { //变参函数 var sum int for _, value := range arg...阅读全文

博文 2020-08-11 19:32:40 行人观学

学习 Go 语言 1 — 基础语法

一、第一个 Go 程序 最近在闲来无事之际开始学习点 Go 语言,Go 语言在近几年很火,有 Docker 和 Kubernetes 这两大杀器做支撑,它已经是云计算领域主流的编程语言了,并且有蚕食部分 C、C++、Java 等领域的趋势,怀着一些对新技术的兴趣,我开始学习了 Go 语言,在对其有了简单的了解之后,我渐渐开始喜欢上这门语言了。 目前我在工作中所使用的主要的编程语言是 Java,Java 虽说优秀,但是我对其并没有太大的好感,主要是它啰嗦复杂,当初学习它也主要是为了找工作。嗯。。。有一丝丝惭愧。 看到 Go 语言的 logo 我就觉得比较新奇,瞬间心情都变得不错了(Go 语言的 logo 是一只地鼠,英文称 Gopher,现在很多 Go 开发者也称自己为 Gopher 了)。 ...阅读全文

博文 2020-09-06 17:34:43 roseduan

golang mod开发模式

用变量 GO111MODULE 开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是 auto。 GO111MODULE=off 无模块支持,go 会从 GOPATH 和 vendor 文件夹寻找包。 GO111MODULE=on 模块支持,go 会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod 下载依赖。 GO111MODULE=auto 在 $GOPATH/src 外面且根目录有 go.mod 文件时,开启模块支持。 在使用模块的时候,GOPATH 是无意义的,不过它还是会把下载的依赖储存在 $GOPATH/src/mod 中, 也会把 go install 的结果放在 $GOPATH/bin 中。 golang版本为1.14。设置方式为 go env...阅读全文

博文 2020-10-05 10:32:38 golang才是未来

Dockerfile命令详解及最佳实践

1. Dockerfile 命令详解: FROM 指定基础镜像(必选) 所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指定的。而FROM就是指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。 在Docker hub上有非常多的高质量的官方镜像,有可以直接拿来使用的服务类的镜像,如 nginx、redis、mongo、mysql、httpd、php、tomcat 等;也有一些方便开发、构建、运行各种语言应用的镜像,如 node、openjdk、python、ruby、golang 等。 如果没有找到对应服务的镜像,官方镜像中还提供了一些更为基础的操作系统镜像,如...阅读全文

博文 2020-07-02 00:33:31 左舷的风

go指针回顾

package main import "fmt" func main() { /* pointer 指针 概念: 存储了另一个变量的内存地址的变量 指针针对的是值类型来操作 指针的类型 : *int , *float32, *string, *array,*struct 指针中存储的数据的类型 : int, float32, string, array,slice,map struct 指针中存储的数据的地址: 指针中存储的数值 指针自己的地址 */ // 1. 定义一个int类型的变量 a := 10 fmt.Println("a的数值是:", a) fmt.Printf("a的类型是: %T\n", a) fmt.Printf("a的地址是: %p\n", &a) //2.创建一个指针...阅读全文

博文 2020-06-08 10:32:46 小兵

Go语言库系列之flag

背景 终端(命令行)操作是程序员的必备技能,但是你知道怎么通过golang制作出如下命令吗? $ flag girl -h Usage of girl: -height int 身高 (default 140) $ flag girl --height 170 恭喜你获得了身高 170 的女朋友 极速上手 整个实现非常简单,只需要5个步骤 第一步,引库 import "flag" 第二步,定义变量 定义该变量的作用是存储命令行参数传来的值 var height int 第三步,配置命令信息 在main函数或init函数中加入 flag.IntVar(&height, "height", 140, "身高") 第一个参数是定义的变量引用 第二个参数:命令的名称 第三个参数:命令参数的默认值 第...阅读全文

博文 2020-04-02 21:33:08 平也

Golang 基础(二)

常量常量使用关键字 const 定义,用于存储不会改变的变量。无法在程序运行过程中修改它的值。存储在常量中的数据只可以是布尔型、数字型(整数型,浮点型和复数)和字符串型。例如: 格式:const identifier [type] = value const Pi = 3.141592658 const a = 3 Go语言中,可以省略类型说明符 type ,Go的编译器可以根据变量的值来推断它的类型,例如: const a string = "abc" // 显式类型定义 const a := "abc" // 隐式类型定义 另外,未定义类型的常量会在必要时候根据上下文来获得相关类型,例如: var n int f(n + 5) // 无类型的数字型常量"5" 它的类型再这会变成int 常...阅读全文

30. 如何使用 GDB 调试 Go 程序?

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 做为新手,熟练掌握一个好的调试工具,对于我们学习语言或者排查问题的时候,非常有帮助。 你如果使用 VS Code 或者 Goland ,可以直接上手,我就不再写这方面的文章了。 其实相比有用户界面的 IDE 调试工具,我更喜欢简单直接的命令行调试,原因有三点: 速度快,个人感觉在 Window...阅读全文

博文 2020-06-08 11:34:36 王一白