go语言系列教程
CodeCo/co
www.codesuger.com
展开
-
Go 语言系列教程(十一) : 并发(1)--浅析Goroutines和Channels
前言在Go语言中,每一个并发的执行单元叫作一个goroutine(协程)。如果你使用过操作系统或者其它语言提供的线程,那么你可以简单地把goroutine类比作一个线程,但实际上两者有本质区别。一. 概念1.1 协程和线程的区别调度上的区别进程线程都是由操作系统进行调度, 有CPU时间片的概念,进行抢占式调度协程是用户态的轻量级线程,对内核透明,所以协程的调度与切换完全由用户控制正因为协程不由操作系统调度,才有 ---- “线程是操作系统调度的最小单位”切换开销的区别原创 2020-09-24 14:27:04 · 152 阅读 · 0 评论 -
Go 语言系列教程(十) : Go的接口及Go中标准接口库,类型断言的使用
前言很多面向对象的语言都有相似的接口概念,但Go语言中接口类型的独特之处在于它是满足隐式实现的,不需要像 java 那样 implements interface 写出来接口的实现和使用一个类型如果拥有一个接口需要的所有方法,那么这个类型就实现了这个接口。摘录-菜鸟编程/* 定义接口 */type interface_name interface { method_name1 [return_type] method_name2 [return_type] me原创 2020-09-23 16:25:42 · 193 阅读 · 0 评论 -
Go 语言系列教程(九) : 函数深入分析
前言熬过了七夕,谢不杀之恩,赶紧写篇博客压压惊。函数声明函数声明包括函数名、形式参数列表、返回值列表(可省略)以及函数体。func name(parameter-list) (result-list) { body}当然函数名前面还可以加上结构体绑定,参考上一节 Go 语言系列教程(八) : 结构体深入解析Tip: 如果函数返回一个无名变量或者 没有返回值,返回值列表的括号是可以省略的如果一组形参或返回值有相同的类型,我们不必为每个形参都写出参数类型。下面2个声明是等价原创 2020-09-23 16:25:15 · 195 阅读 · 0 评论 -
Go 语言系列教程(八) : 结构体深入解析
前言学习之前大家先思考一个问题–Go有对象?Go没对象,为什么呢?这个好难回答,不如换个问题:“You 为啥没对象?”记得刚刚学c语言的时候,嗯,没有对象是很正常的。学Java的时候,第一堂课,就是:“恭喜在座的各位,你们开始有对象了。”Go没有对象?那还咋活!没对象,又想要原来那种有对象的日子,怎么办?好说好说,那就是假装自己有对象于是啊,Go 没有继承,就找了干儿子当儿子。然后,表现出我有继承人。下面给大家列举一个很有意思的例子来自 [go语言中文社区–习惯研究所所长] htt原创 2020-09-23 16:24:39 · 2386 阅读 · 0 评论 -
Go 语言系列教程(七) : Map深入解析
前言Map 哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合,其中所有的key都是不同的,在Go语言中,map类型可以写为map[K]V ,key和value之间可以是不同的数据类型。其中K对应的key必须是支持==比较运算符的数据类型 ,必须要申请空间,所有的引用类型都要这么做.补充:### 那些数据类型可以比较 即 那些数据类型可以作为map的key基本类型---都可以比较数组/struct---如果其元素类型可以比较,则数组/struct是可以比较的。即两原创 2020-09-23 16:24:05 · 271 阅读 · 0 评论 -
Go 语言系列教程(六) : 数组和切片深入解析
前言数组大家都知道,切片就是一种可以动态增长的数组。可以参考Java的List数组数组的特点数组中是固定长度的连续空间(内存区域),长度固定所以在go语言中很少使用数组中所有元素的类型是一样的,默认情况下,数组的每个元素都被初始化为元素类型对应的零数组的长度是数组类型的一个组成部分,因此 [3]int 和 [4]int 是两种不同的数组类型。数组的长度必须是常量表达式,因为数组的长度需要在编译阶段确定。数组的声明常规的数组声明方法,它的类型是[10]int,数组长度被认为是数组原创 2020-09-23 16:23:31 · 319 阅读 · 2 评论 -
Go 语言系列教程(五) : range的使用
前言这里我们来学习一下range,在for循环中可以迭代 array、slice、map、channel、字符串及所有涉及到遍历输出的东西。range没有什么好说,主要就是熟悉代码和提高迭代性能,大家把代码手敲下来自己运行一遍package mainimport "fmt"func main() { //切片迭代 fmt.Println("----切片迭代----") nums := []int{1, 2, 3, 4, 5, 6} for k, v := range nums原创 2020-09-23 16:22:55 · 499 阅读 · 0 评论 -
Go 语言系列教程(四) : 条件 选择 循环
前言对于条件,选择,循环各个语言大差不差 这里就简单讲一下 如何使用条件package mainimport "fmt"func main() { a := 20 if a > 0 { fmt.Println("大于0") }else { fmt.Println("小于0") }}结果大于0选择switch 和 type switchswitch 后跟变量,case 后跟常量,只要变量值和常量匹配,就执行该分支下的语句。当然switch语句原创 2020-09-23 16:22:21 · 139 阅读 · 0 评论 -
Go 语言系列教程(三) : 常量和类型转换
附录%d十进制整数%x, %o, %b十六进制,八进制,二进制整数。%f, %g, %e浮点数: 3.141593 3.141592653589793 3.141593e+00%t布尔:true或false%c字符(rune) (Unicode码点)%s字符串%q带双引号的字符串"abc"或带单引号的字符’c’%v变量的自然形式(natural format)%T变量的类型%%字面上的百分号标志(无操作数)常量原创 2020-09-23 16:21:33 · 287 阅读 · 0 评论 -
Go 语言系列教程(二) : Go的数据类型以及变量声明
前言为了快速入门 这里我不在细致的讨论每一种数据类型,之后会出相应的章节来详细介绍 短 快 躲坑 才是这个教程的宗旨参照 Go语言圣经-The Go Programming LanguageGo中的数据类型Unix 一切皆文件C++/Java/Python 一切皆对象Golang 一切皆类型值类型:基本数据类型int, float,bool, string以及数组和struct引用类型:指针,slice,map,chan等都是引用类型所有的参数传递都是值拷贝。对于值类型原创 2020-09-23 16:20:51 · 222 阅读 · 0 评论 -
Go 语言系列教程(一) : Go的安装与配置
Go的安装与配置下载Go[^下载地址] : https://golang.google.cn/dl/下载完成后,运行.msi文件,然后按照指示进行安装安装完毕后按Win+R,输入“cmd”打开命令提示符go version #查看Go的版本go env #查看Go的环境变量环境变量配置右击我的电脑 >> 属性 >> 高级系统设置 >> 高级 >> 环境变量GOPATH:工作目录 这个自己选择GOROOT:安装目录这里要注意一原创 2020-09-23 16:19:48 · 785 阅读 · 0 评论