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

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 过愙

go 介绍与安装

go Go 亦称为 Golang(译注:按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言。 Golang 的主要关注点是使得高可用性和可扩展性的 Web 应用的开发变得简便容易。(译注:Go 的定位是系统编程语言,只是对 Web 开发支持较好) 既然有很多其他编程语言可以做同样的工作,如 Python,Ruby,Nodejs 等,为什么要选择 Golang 作为服务端编程语言? 为何选择 Golang 以下是我使用 Go 语言时发现的一些优点: 并发是语言的一部分(译注:并非通过标准库实现),所以编写多线程程序会是一件很容易的事。后续教程将会讨论到,并发是通过 Goroutines 和 channels 机制实现的。 ...阅读全文

博文 2019-08-13 18:32:46 Q14

(二) 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 复合数据类型:结构体

结构体的定义 结构体也是一种复合类型,通常使用带属性的结构体来表示一个现实中的实体。结构体也是值类型,因此可以通过使用 new 函数来创建。Go语言不是一门传统的面向对象的编程语言,因此 Go 中没有类的概念,也不支持类的面向对象概念。结构体是由零个或多个任意类型的值聚合成的实体,每个值都可以称为结构体的成员。 结构体成员也可以称为“字段”,这些字段有以下特性: 字段拥有自己的类型和值; 字段名必须唯一; 字段的类型也可以是结构体,甚至是字段所在结构体的类型。 type Family struct { name string age int language string ... } type Family struct { name, language string //同一类型的变量可以...阅读全文

博文 2020-06-03 15:32:41 sunlingbot

Dig101:Go之for-range排坑指南

好久没写了,打算今年做个Dig101系列,挖一挖技术背后的故事。 Dig101: dig more, simplified more and know more golang常用的遍历方式,有两种: for 和 for-range。而for-range使用中有些坑常会遇到,今天我们一起来捋一捋。 0x01 遍历取不到所有元素指针? 如下代码想从数组遍历获取一个指针元素切片集合 arr := [2]int{1, 2} res := []*int{} for _, v := range arr { res = append(res, &v) } //expect: 1 2 fmt.Println(*res[0],*res[1]) //but output: 2 2 答案是【取不到】同样代码对切片...阅读全文

博文 2020-02-19 10:32:41 newbmiao

Go 译文之词法分析与解析 Part Three

作者:Adam Presley | 地址:adampresley.github.io/2015/06/01/… 译者前言 最近发现我的翻译是越来越随性了,刚开始文章翻译的时候比较拘束,现在更多强调可读性,比如有些对文章大意没有什么影响的文字我现在都会选择直接跳过。 这篇文章主要是关于 INI 解释器的 parser 实现,它会从上一节中 Lexer 中接收 Token 解析,最终返回给使用者具有实际意义的结构体。读了这个系列的文章,我相信大家对词法器实现的原理将会有了基本的理解,但如果要真正实践,似乎还有一段距离。有兴趣的话,我们可以实现个自己的 JSON 解释器。要求可以稍微简化,只解析到 JSON 的第一层。 译文如下: 本系列第一篇文章,英文原版,我们介绍了词法分析解析的一些基础概念,...阅读全文

博文 2019-08-01 01:04:15 波罗学

GO常量与变量

package main import ( "fmt" ) //单个变量(自行判断变量类型) var test1 = "content1" /*单个变量 先声明类型再赋值,此种方式函数中调用不了(会报错syntax error: non-declaration statement outside function body) 请再函数外设置 */ //var test2 string //test2 = "content2" //test3 : = "content3" //:=左侧的变量不应该是已经被声明过的,否则会导致编译错误 //单个变量 var test4 string = "content4" /*多个变量 此种方式函数中调用不了,请再函数外设置 */ //var test5, t...阅读全文

博文 2020-04-16 15:37:42 赛里

DAY3 GOLANG(三)函数

函数func 函数名 (形参列表)(返回值类型列表){ 执行语句 return 返回值列表}如果返回多个值,(返回值类型列表)的小括号必须写如果返回值只有一个,(返回值类型列表)可以不写()形参列表:表示函数的输入函数中的语句:表示为了实现功能代码块函数可以有返回值,也可以没有范例func cal (n1 float64, n2 float64,operator byte) float64{ // n1,n2,operator 形参 var res float64 switch operator { case '+' : res = n1 + n2 case '-' : res = n1 - n2 case '*': res = n1*n2 case '/': res =n1/n2 defa...阅读全文

博文 2019-10-29 21:32:53 aside section._1OhGeD

GO函数

/* 格式: func function_name( [parameter list] ) [return_types]{ 函数体 } func:func声明 function_name:函数名称 [parameter list]:参数列表 return_types:返回类型,不需要返回值的,return_types可以不写。 函数体:函数体 */ package main import ( "fmt" ) func main() { //定义局部变量 var a int = 55555 var b int = 66666 var result int //调用函数 (a和b实参) result = max(a, b) //调用函数 c, d := exchange("gxm", "sail...阅读全文

博文 2020-04-29 03:33:13 赛里

Go 译文之词法分析与解析 Part Three

作者:Adam Presley | 地址:https://adampresley.github.io... 译者前言 最近发现我的翻译是越来越随性了,刚开始文章翻译的时候比较拘束,现在更多强调可读性,比如有些对文章大意没有什么影响的文字我现在都会选择直接跳过。 这篇文章主要是关于 INI 解释器的 parser 实现,它会从上一节中 Lexer 中接收 Token 解析,最终返回给使用者具有实际意义的结构体。读了这个系列的文章,我相信大家对词法器实现的原理将会有了基本的理解,但如果要真正实践,似乎还有一段距离。有兴趣的话,我们可以实现个自己的 JSON 解释器。要求可以稍微简化,只解析到 JSON 的第一层。 译文如下: 本系列第一篇文章,英文原版,我们介绍了词法分析解析的一些基础概念,了解...阅读全文

博文 2019-08-01 12:32:37 波罗学

Go开发中的十大常见陷阱[译]

文: The Top 10 Most Common Mistakes I’ve Seen in Go Projects 作者: Teiva Harsanyi 译者: Simon Ma 我在Go开发中遇到的十大常见错误。顺序无关紧要。 未知的枚举值 让我们看一个简单的例子: type Status uint32 const ( StatusOpen Status = iota StatusClosed StatusUnknown ) 在这里,我们使用iota创建了一个枚举,其结果如下: StatusOpen = 0 StatusClosed = 1 StatusUnknown = 2 现在,让我们假设这个Status类型是JSON请求的一部分,将被marshalled/unmarshalled...阅读全文

博文 2019-08-17 17:02:38 SimonMa

golang源码学习之sync.pool

源码目录 ///sync.pool.go (1.1.4.1) 前言 sync.pool对象池是个好东西,避免对象的反复创建和回收。对于一些需要频繁创建的对象我们可以使用它来避免内存的频繁申请、回收。但应避免用于连接池,因为sync.pool存储的对象仅存活在三次STW之间。 数据结构 //sync.pool.go type Pool struct { noCopy noCopy // 不可复制标准 local unsafe.Pointer // 指向poolLocal数组 localSize uintptr // poolLocal数组长度 victim unsafe.Pointer // 指向poolLocal数组 victimSize uintptr // poolLocal数组长度 N...阅读全文

博文 2020-04-06 21:32:56 ihornet

02Gin源码解读

简介 HttpRouter 实现 数据结构 添加路由 addRoute insertChild 获取数据 总结 简介 Gin 源码解读, 基于 v1.5.0 版本. HttpRouter 实现 添加路由主要是由 addRoute 完成: func (engine *Engine) addRoute(method, path string, handlers HandlersChain) { assert1(path[0] == '/', "path must begin with '/'") assert1(method != "", "HTTP method can not be empty") assert1(len(handlers) > 0, "there must be at le...阅读全文

博文 2019-12-06 11:32:36 帅气猫咪

Go语言入门(六)结构体后续&指针

结构体后续&指针 指针 变量和内存地址 每个变量都有内存地址,可以通过变量来操作对应的内存 func varMem() { var a int32 = 100 fmt.Printf("addr %p\n",&a) } func pointMem() { var b int32 b = 32 var a *int32 fmt.Printf("addr of a:%v\ntype of a %T\n",a,a) //取出a的地址和类型 a = &b fmt.Printf("a %d addr:%p\ntype of a:%T\nb %d addr %p\n",*a,&a,a,b,&b) } 指针的定义与取值 &: 取地址 *: 取指针对应的值 充分判断指针为nil的情况 func pointMe...阅读全文

博文 2020-03-26 23:33:13 wx5b285b48ed74e

Golang入门教程——函数、循环与分支

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Golang专题的第四篇,这一篇文章将会介绍golang当中的函数、循环以及选择判断的具体用法。 函数 在之前的文章当中其实我们已经接触过函数了,因为我们写的main函数本质上也是一个函数。只不过由于main函数没有返回值,也没有传参,所以省略了很多信息。 func main() { fmt.Println("Hello World") } 复制代码 下面,我们来看看一个完整的函数是怎样的,这是golang官网上的例子。 func add(x int, y int) int { return x + y } 复制代码 这是一个非常简单的a+b的函数,我想大家应该都能看懂。我们来重点关注一下函数的格式。首先是func关键字,我们...阅读全文

博文 2020-05-09 22:34:22 承志

(二)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 运维路

如何在JavaScript中重命名对象键?

JavaScript不提供内置函数来重命名对象键,那么如何重命名对象键?下面本篇文章就来给大家介绍一下在JavaScript中重命名对象键的方法,希望对大家有所帮助。 在JavaScript中,对象用于存储各种数据的集合,是属性的集合;属性是一个“key:value”对。其中key(键)称为“属性名”,用于标识值。下面介绍重命名对象键的方法。方法一:通过简单的变量赋值来重命名对象在分配了一个或多个变量之后,我们将删除旧的键值对并打印新的键值对。语法:obj['New key'] = obj['old key'];注意:通过简单的变量赋值来重命名对象可以应用于多个键值对。例: 阅读全文

博文 2020-03-16 17:32:53 yanghs

带你学够浪:Go语言基础系列 - 8分钟学控制流语句

★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) ” 对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握。基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Golang 这趟新车。 Hurry up , Let's go ! 控制语句是程序的灵魂,有了它们程序才能完成各种逻辑,今天我们就来学习 Go 中的各种控制语句。 通过本文的学习你将掌握以下知识: if 条件语句for 循环语句switch 语句defer 延迟调用 if 条件语句 与大多数编程语言一样,if 用于条件判断,当条件表达式 expr ...阅读全文

博文 2020-06-03 01:34:22 柠檬橙

9. Go 语言流程控制:switch-case

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

博文 2020-05-01 20:34: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`其实我们可以把它看成...阅读全文

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

带你学够浪:Go语言基础系列 - 8分钟学复合类型

文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握。基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Golang 这趟新车。 Hurry up , Let's go ! 前面我们学习过 Golang 中基础数据类型,比如内置类型 int string bool 等,其实还有一些复杂一点点,但很好用的复合类型,类似 C 中的数组和 struct、C++ 中的 map ,今天我们就来学习 Go 中的复合类型。 通过本文的学习你将掌握以下知识: 结构体 指针类型...阅读全文

博文 2020-06-08 01:33:10 柠檬橙1024

go value receiver, pointer receiver 方法集

go 语言规范里定义的 method sets 规则 Values 可调用的方法(methods receivers) 备注 T (t T) funcXXX 为什么不能调用 (t *T) funcXXX,因为无法保证所有的Value 都可以获取到指针地址(addressable value) *T (t T) funcXXX and (t *T) funcXXX go 自动转化(dereferenced) *T --> T, 所以可以调用 为什么有些值无法获取地址? go spec: https://golang.org/ref/spec#Address_operators 说明了不能寻址的情况。 常见的不能寻址的情况: &m["key"] &afunc() &t.method() var ...阅读全文

博文 2020-03-04 10:32:44 cdz620

interface golang

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

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

三言两语说清楚go语言的module

查看go的版本 go version go从1.11版本开始支持module功能。 如果go的版本是1.11和1.12,项目位于$GOPATH/src里面的时候,module功能不会生效,即使你目录中有go.mod文件也无济于事。 如果go的版本是>=1.13,无论你的项目路径在哪里,只要项目中有go.mod文件,module功能就会生效。 设置环境变量 我的go语言版本是1.11.5,是支持module功能的,但是需要手动开启,方式是设置环境变量,即export GO111MODULE=on,这个只在当前终端生效。 开发一个模块 假设我们开发的模块最终会上传到https://gitee.com/xxfaxy/go-module-test这个地址,我们记为A。 在$GOPATH/src之外的...阅读全文

博文 2020-02-29 22:32:39 xxfaxy

每天一点Go语言——Go语言语法基础及基本数据类型

每天一点Go语言——Go语言语法基础及基本数据类型 一、Go语言基础语法 ​ 上篇Go语言讲解中谈到了有关Go语言的基本组成结构,该小节就来讲述有关go语言的基础语法。Go语言程序由多个标记组成,如:关键字、标识符、常量、符号、字符串。 ​ 行分割符——一行表示一个语句结束,无需写“;”。当然,你可以将多条语句写在一行,并且使用“;”号区分,但是不推荐这样写开发代码。 ​ 注释在本文就不多说了。 标识符 ​ 如果说变量是shell入门的第一道关卡,那么可以说,标识符就是开发语言的第一道门槛。 ​ 标识符,从官方角度解释:用于命名变量、类型等程序实体。一个标识符具备的特点:实际上就是一个或是多个字母(A~Z和a~z)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母huo下划线而不能...阅读全文

博文 2020-04-03 14:33:23 wx5d8a17c45cb5b

11.函数

Go语言基础之函数 Golang 函数是组织好的、可重复使用的、用于执行指定任务的代码块。本文介绍了Go语言中函数的相关内容。 函数 Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 函数定义 Go语言中定义函数使用func关键字,具体格式如下: func 函数名(参数)(返回值){ 函数体 } 其中: 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。 参数:参数由参数变量和参数变量的类型组成,多个参数之间使用,分隔。 返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用()包裹,并用,分隔。 函数体:实现指定功能的代码块。 我们先来定义一个求两个数之和的函数: ...阅读全文

博文 2020-04-08 07:32:51 雪上霜

Golang基础(六) | 接口

Interface类型 简单的说,interface是一组method签名的组合,我们通过interface来定义对象的一组行为。interface类型定义了一组方法,如果某个对象实现了某个接口的所有方法,则此对象就实现了此接口。详细的语法参考下面这个例子。 type Human struct { name string age int phone string } type Student struct { Human //匿名字段Human school string loan float32 } type Employee struct { Human //匿名字段Human company string money float32 } //Human对象实现Sayhi方法 func ...阅读全文

博文 2020-03-24 22:32:49 youzhihua

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语言——变量、常量、运算符解析

每天一点Go语言——变量、常量、运算符解析 前言 ​ 前面简单说过有关Go语言的基础语法及其数据类型,大致上了解了Go语言程序的组成,而本文将讲述近乎所有编程语言都涉及的变量、常量以及运算符相关内容。 一、变量 何为变量? ​ 对该专业名词解释:计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。Go语言中的变量由字母、数字、下划线组成,首字母不可以为数字。耳熟能详了哈~ ​ 笔者的理解:我编写程序的时候需要使用一个值,并且我一直想要重复使用,而且有时候这个值会发生变化等等,所以我需要声明一个变量来被这个值赋之。 怎么声明变量? 变量声明一般格式: var 变量名 变量类型 var:变量声明关键字,表示声明变量 其次是变量的名字,最后是变量的类型(如int) 当然也有其他的...阅读全文

博文 2020-04-04 15:33:12 wx5d8a17c45cb5b

Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[1]

Go是一门简单有趣的语言,但与其他语言类似,它会有一些技巧。。。这些技巧的绝大部分并不是Go的缺陷造成的。如果你以前使用的是其他语言,那么这其中的有些错误就是很自然的陷阱。其它的是由错误的假设和缺少细节造成的。 如果你花时间学习这门语言,阅读官方说明、wiki、邮件列表讨论、大量的优秀博文和Rob Pike的展示,以及源代码,这些技巧中的绝大多数都是显而易见的。尽管不是每个人都是以这种方式开始学习的,但也没关系。如果你是Go语言新人,那么这里的信息将会节约你大量的调试代码的时间。 目录 初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accidental Variable Shadowing...阅读全文

博文 2020-05-19 10:36:25 开发者阿俊

go 入门教程变量

变量定义要求 :Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字 在描述变量定义之前,先描述下go 语言的结构 package main import "fmt" import "math" func main() { // 定义单一变量 var age =28 fmt.Println("my age is ",age) } 输出:my age is 28 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注...阅读全文

博文 2020-01-03 12:33:13 水滴石川1

第三章 九析带你轻松完爆 go - 变量声明

1 前言 go 语言跟很多编译型语言一样,在使用变量前首先需要声明。声明方式有两种:单行声明和批量声明,声明关键字为 var,且如果声明局部变量而不使用则会编译报错。 同时需要注意的是,go 语言语句并没有分号“;”做结尾,并且单行声明语法如下:var var_name var_type 例如:var name string 批量声明语法如下:var ( name string age int gender string)2 代码样例 如下是 go 语言使用过程中一个代码样例:package mainimport "fmt"func main() { var username string = "mark" var password string = "helloworld" var ( a...阅读全文

博文 2020-02-23 23:33:18 九析

learn go with tests 学习笔记(二) 数组与切片

知识点 先写测试! Go 有内置的计算测试 覆盖率的工具,它能帮助你发现没有被测试过的区域。我们不需要追求 100% 的测试覆盖率,它只是一个供你获取测试覆盖率的方式。只要你严格遵循 TDD 规范,那你的测试覆盖率就会很接近 100%。 运行: `go test -cover` 你会看到: PASS coverage: 100.0% of statements 数组 数组初始化: 数组的容量是我们在声明它时指定的固定值。我们可以通过两种方式初始化数组: [N]type{value1, value2, ..., valueN} e.g. numbers := [5]int{1, 2, 3, 4, 5} [...]type{value1, value2, ..., valueN} e.g. nu...阅读全文

博文 2020-05-28 21:32:46 硌手小石头

(二)Golang的变量

为什么需要变量: 变量是程序的基本组成单位不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位,比如: func getVal(num1 int, num2 int) (int, int) {sum := num1 + mum2sub := num1 - num2return 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-16 00:33:55 运维路

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...阅读全文

手把手golang教程——数组与切片

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第五篇,这一篇我们将会了解golang中的数组和切片的使用。 数组与切片 golang当中数组和C++中的定义类似,除了变量类型写在后面。 比如我们要声明一个长度为10的int型的数组,会写成这样: var a [10]int 复制代码 数组的长度定义了之后不能改变,这点和C++以及Java是一样的。但是在我们日常使用的过程当中,除非我们非常确定数组长度不会发生变化,否则我们一般不会使用数组,而是使用切片(slice)。 切片有些像是数组的引用,它的大小可以是动态的,因此更加灵活。所以在我们日常的使用当中,比数组应用更广。 切片的声明源于数组,和Python中的list切片类似,我们通过指定左右区间的范围来声...阅读全文

博文 2020-05-17 22:34:25 承志

Golang | 高级数据类型

一、数组 数组作为函数参数,传值的; 只有长度和类型相同,才是同一类型,才可以相互赋值; var arr = [10]int{1, 2, 3}//声明长度才是数组,没声明长度的是切片 //切片可以append,数组不可以 //[]int 和 [10]int是不能相互赋值的。 复制代码二、切片 切片是引用类型, 什么是引用类型? "引用类型" 有两个特征:1、多个变量引用一块内存数据,不创建变量的副本,2、修改任意变量的数据,其它变量可见。 1、slice内存结构 type SliceHeader struct { Data uintptr Len int Cap int } //在64位架构的机器上,一个切片需要24字节的内存:指针字段需要8字节,长度和容量字段分别需要8字节。 //可以看出...阅读全文

博文 2020-04-06 00:34:22 _Liu_

9. Go 语言流程控制:switch-case

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

博文 2020-05-01 18:32:40 Python编程时光

golang

go变量 // 变量可以以字母,数字,下划线组成,但是只能以数字或下划线开头 var varibale type = value var varuable = value // 根据值类型自动推断类型 var variable_1 type variable_1 = value // 1. 已经声明的变量不能使用以下方式赋值。:= 左侧的变量不应该时已经被声明过的。 // 2. 同时不带声明格式的只能在函数体中出现。 // 3. 使用:= 赋值的变量不能再次使用:=赋值。否则 提示编译错误:no new variables on left side of := // 4.go中如果你声明了一个局部变量却没有在相同的代码块中使用它,同样会得到编译错误。a declared and not us...阅读全文

博文 2019-03-27 20:35:35 yuerumylove

Golang筑基 —— 语言结构、语法篇

Goalng结构 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 下面以代码示例说明: package main import "fmt" func main(){ //声明变量a var a string //给变量a赋值 a = "hello world!" //输出a fmt.Println(a) } package :包名,Golang中所有的文件都要有package,用于标记文件的内容属于哪个包;包分为两类main包和非main包,一个程序只能有一个main包。包之间不能交叉引用,类似于c/c++不能交叉引用.h文件。 import :引用的包,可以为自定义的包,也可以是系统包,fmt就是系统包,实现输出的功能 main:主函数,只有mai...阅读全文

博文 2020-01-07 19:32:43 技术修仙

3.变量和常量

Go语言基础之变量和常量 | Golang 变量和常量是编程中必不可少的部分,也是很好理解的一部分。 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。 关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。 Go语言中有25个关键字: break default func interface select case defer go map struct chan else goto package switch const fallthrough if range ...阅读全文

博文 2020-04-04 09:32:48 雪上霜

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

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

博文 2020-05-07 09:32:42 Python编程时光

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、查看某个变量的数据类型...阅读全文

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

编程语言的一些基础概念(三):面向对象

在前面两篇中,主要讲了函数式编程语言的一些基础概念。这篇是 Coursera Programming Languages, Part C 的总结,通过 Ruby 介绍面向对象编程里的一些概念。了解这些概念能让你在上手任何一门新的面向对象语言时,都更加得心应手。 虽然用的是 Ruby,但是不会涉及很深的 Ruby,即使不懂 Ruby,读下来应该没问题。对于已经了解面向对象编程的朋友,可以考虑直接跳到子类和继承那部分,或许你会有一些新的启发。 面向对象编程 & Ruby 面向对象编程(Object Oriented Programming)简称 OOP,像 Java,C++ 等语言的主要编程模式都是面向对象的。OOP 主要是通过 对象(Object) 来抽象表示,比如说平面上的一个点,可以抽象表...阅读全文

博文 2019-07-01 00:32:42 闭眼卖布

0基础自学linux运维-1.2-centos Go安装

根据go安装文档:https://golang.google.cn/doc/install#tarball 进行改写的 mkdir /tools cd /tools #1.卸载之前的golangyum remove golang#2.下载 https://golang.org/dl/ wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz tar -C /usr/local -xzf go1.11.linux-amd64.tar.gz ll /usr/local/go/ #3.设置环境变量(方法二,这里用此方法) echo 'export PATH=$PATH:/usr/local/go/bin' >>/etc/profile tail...阅读全文

博文 2019-07-01 20:32:38 hualinux

通俗易懂:说说 Python 里的线程安全、原子操作

首发于微信公众号:Python编程时光 在线博客地址:python.iswbm.com/en/latest/c… 在并发编程时,如果多个线程访问同一资源,我们需要保证访问的时候不会产生冲突,数据修改不会发生错误,这就是我们常说的 线程安全 。 那什么情况下,访问数据时是安全的?什么情况下,访问数据是不安全的?如何知道你的代码是否线程安全?要如何访问数据才能保证数据的安全? 本篇文章会一一回答你的问题。 1. 线程不安全是怎样的? 要搞清楚什么是线程安全,就要先了解线程不安全是什么样的。 比如下面这段代码,开启两个线程,对全局变量 number 各自增 10万次,每次自增 1。 from threading import Thread, Lock number = 0 def target()...阅读全文

博文 2020-05-14 19:34:39 王一白

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 旧梦发癫

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 王一白

golang结构体

定义 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体的定义 结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下: type struct_variable_type struct { member definition member definition ... member definition } 结构体声明格式: variable_name := structure_variable_type {value1, value2...valuen} 或 variable_name := structure_variable_type { key1: v...阅读全文

博文 2020-01-01 02:32:54 程序小白菜

第四章 九析带你轻松完爆 go - 常量使用

1 单行声明 常量单行声明使用的语法如下。常量声明的位置可以是全局(所有函数外部)、局部(函数内部)。// PI is for math caculateconst PI = 3.142 批量声明 批量声明的方法跟变量声明类似,语法如下:const ( MON = 1 TUD = 2 WEN = 3 )3 iota 使用 iota 是常量的初始值定义符。默认值是 0。但是如果在批量常量定义的时候,出现在第几行,值等于“行号-1”。3.1 依次递增 代码如下:const ( t1 = iota t2 t3) 输出结果:0123.2 嵌入匿名常量 匿名常量用 _ 表示,代码如下:const ( t1 = iota t2 _ t3) 输出结果:0133.3 批量声明中多次使用 代码如下:const...阅读全文

博文 2020-02-23 22:33:15 九析