随笔分类 -  Go语言

摘要:并发与并行 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天)。 并行:同一时刻执行多个任务(你和你朋友都在用微信和女朋友聊天)。 Go语言的并发通过goroutine实现。goroutine类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个goroutine并发工作。gorou 阅读全文
posted @ 2019-12-13 15:00 waller 阅读(302) 评论(0) 推荐(0)
摘要:reflect包 在Go语言的反射机制中,任何接口值都由是一个具体类型和具体类型的值两部分组成的(我们在上一篇接口的博客中有介绍相关概念)。 在Go语言中反射的相关功能由内置的reflect包提供,任意接口值在反射中都可以理解为由reflect.Type和reflect.Value两部分组成,并且r 阅读全文
posted @ 2019-12-12 19:31 waller 阅读(254) 评论(0) 推荐(0)
摘要:接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种体现。接口做的事情就像是定义一个协议(规则) 举例:只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关 阅读全文
posted @ 2019-12-11 21:19 waller 阅读(161) 评论(0) 推荐(0)
摘要:在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的。本文介绍了Go语言中如何定义包、如何导出包的内容及如何导入其他包。 Go语言的包(package) 包介绍 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如f 阅读全文
posted @ 2019-12-11 18:49 waller 阅读(619) 评论(0) 推荐(0)
摘要:自定义类型和类型别名 自定义类型 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型。 自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。例如: // MyInt 将定义为in 阅读全文
posted @ 2019-12-10 20:59 waller 阅读(559) 评论(0) 推荐(0)
摘要:区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。 概念 任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。 比如,“人生苦短,Let's 阅读全文
posted @ 2019-11-29 19:52 waller 阅读(473) 评论(0) 推荐(0)
摘要:函数是组织好的、可重复使用的、用于执行指定任务的代码块。本文介绍了Go语言中函数的相关内容。 介绍 Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 函数可以赋值给变量 函数可以被当做参数传入函数 函数可以被调用 函数定义 Go语言中定义函数使用func关键字,具体格式如下 阅读全文
posted @ 2019-11-26 20:56 waller 阅读(328) 评论(0) 推荐(0)
摘要:Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。 map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map内的键值对是无序的 map定义 Go语言中 map的定义语法如下: map[KeyType]ValueType Ke 阅读全文
posted @ 2019-11-25 22:05 waller 阅读(144) 评论(0) 推荐(0)
摘要:引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。 例如: func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ sum = sum + v } return sum } 这个求和函数只能接受[3]int 阅读全文
posted @ 2019-11-24 19:09 waller 阅读(220) 评论(0) 推荐(0)
摘要:Array 数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 1.数组 在定义阶段,长度和类型就固定了,以后不能更改 2.长度也是数组类型的一部分 数组定义: var 数组变量名 [元素数量]T // 定义一个长度为3元素类型为int 阅读全文
posted @ 2019-11-24 15:38 waller 阅读(2881) 评论(0) 推荐(0)
摘要:包 在Go中,同一个文件夹下的.go文件可以理解为是在同一包下,这些.go文件的首行代码:package 包名 是一样的(包都存放在GOPATH的src文件夹下) //在同一个包下,变量,函数,都不能重复定义 //在包内定义的函数如果是小写字母开头,表示只能在包内部使用 //在外部包想使用,函数名必 阅读全文
posted @ 2019-11-24 13:26 waller 阅读(689) 评论(0) 推荐(0)
摘要:运算符用于在程序运行时执行数学或逻辑运算。 运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算数运算符 运算符描述 + 相加 - 相减 * 相乘 / 相除 % 求余 注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。 关系运算符 阅读全文
posted @ 2019-11-23 21:06 waller 阅读(111) 评论(0) 推荐(0)
摘要:流程控制 流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。 Go语言中最常用的流程控制: if | for | switch | goto// switch与goto主要是为了简化代码降低重复代码而生的结构,属于控制类的流程控制 if else(分支结构) 阅读全文
posted @ 2019-11-23 20:17 waller 阅读(316) 评论(0) 推荐(0)
摘要:Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。 基本数据类型 整形 整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:ui 阅读全文
posted @ 2019-11-23 16:16 waller 阅读(216) 评论(0) 推荐(0)
摘要:解决办法 这里的是Windows的环境下的解决办法 在GOPATH的src目录下面创建github.com\golang文件夹,若文件夹存请忽略本步骤 在vs code终端执行: cd %GOPATH%\src\github.com\golang 这里的%GOPATH%就是GOPATH 完成目录切换 阅读全文
posted @ 2019-11-22 20:23 waller 阅读(815) 评论(0) 推荐(0)
摘要:标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。 关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关 阅读全文
posted @ 2019-11-12 21:46 waller 阅读(156) 评论(0) 推荐(0)
摘要:Go 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://golang.google.cn/dl/ Go中文文档 : https://studygolang.com/pkgdoc linux 安装 Windows安装 此安装实例以 64位 阅读全文
posted @ 2019-11-11 20:57 waller 阅读(429) 评论(0) 推荐(0)