Golang-教程】的更多相关文章

声明单一变量 声明一个变量的语法为:var name type,例如 package main import "fmt" func main() { var age int // variable declaration fmt.Println("my age is", age) } 语句 var age int 声明了一个类型为 int,名称为 age 的变量.在这里我们没有给它赋任何值.如果一个变量没有被赋予任何值,Go 会自动将这个变量初始化为其类型的 0值,…
什么是 map? Map 是 Go 中的内置类型,它将键与值绑定到一起.可以通过键获取相应的值. 如何创建 map? 可以通过将键和值的类型传递给内置函数 make 来创建一个 map.语法为:make(map[KeyType]ValueType).(译者注:map 的类型表示为 map[KeyType]ValueType)例如: personSalary := make(map[string]int) 上面的代码创建了一个名为 personSalary 的 map.其中键的类型为 string…
数组 数组是类型相同的元素的集合.例如,整数 5, 8, 9, 79, 76 的集合就构成了一个数组.Go不允许在数组中混合使用不同类型的元素(比如整数和字符串). 声明 var variable_name [SIZE] variable_type 有很多声明数组的方式,让我们一个一个地介绍. package main import ( "fmt" ) func main() { ]int //int array with length 3 fmt.Println(a) } var a…
什么是包?为什么使用包? 到目前为止我们见到的 Go 程序都只有一个文件,文件中包含了一个main函数和几个其他函数.在实际中这种将所有代码都放在一个文件里的组织方式是不可行的.这样的组织方式使得代码变得无法重用和维护困难.包(package)用于解决这样的问题. 包用于组织Go源代码,以获得更好的重用性和可读性.包提供了代码封装的机制从而使得Go应用程序易于维护.例如,假设我们正在开发一个图像处理应用,它提供了诸如图像裁剪,锐化,模糊和增色等功能.一种组织代码的方式是将所有实现同一功能的代码放…
定义常量 常量(constant)表示固定的值,比如:5,-89,"I love Go",67.89 等等. 考虑如下程序: var b string = "I love Go" 上面的程序中, a 和 b 分别被赋值为常量 50 和 "I love Go".关键字 const 用于指示常量,如 50 和 "I love Go".在上面的代码中,尽管没有使用关键字 const 修饰 50 与 "I love Go&q…
下面是 Go 支持的基本类型: bool Numeric Types  int8, int16, int32, int64, int uint8,uint16,uin32,uint64, uint float32, float64 complex64, complex128 byte rune string bool bool 类型表示真假值,只能为 true 或 false. import "fmt" func main() { var a bool = true b := fals…
在上一篇教程中,我们讨论了如何使用协程实现并发.在这篇教程中,我们将讨论信道以及如何使用信道实现协程间通信. 什么是信道 信道(Channel)可以被认为是协程之间通信的管道.与水流从管道的一端流向另一端一样,数据可以从信道的一端发送并在另一端接收. 声明信道 每个信道都有一个与之关联的类型.此类型是允许信道传输的数据类型,除此类型外不能通过信道传输其他类型. chan T 是一个 T 类型的信道. 信道的 0 值为 nil.值为 nil 的信道变量没有任何用处,我们需要通过内置函数 make …
在上一篇中,我们讨论了并发,以及并发和并行的区别.在这篇教程中我们将讨论在Go中如何通过Go协程实现并发. 什么是协程 Go协程(Goroutine)是与其他函数或方法同时运行的函数或方法.可以认为Go协程是轻量级的线程.与创建线程相比,创建Go协程的成本很小.因此在Go中同时运行上千个协程是很常见的. Go协程对比线程的优点 与线程相比,Go协程的开销非常小.Go协程的堆栈大小只有几kb,它可以根据应用程序的需要而增长和缩小,而线程必须指定堆栈的大小,并且堆栈的大小是固定的. Go协程被多路复…
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第五篇,这一篇我们将会了解golang中的数组和切片的使用. 数组与切片 golang当中数组和C++中的定义类似,除了变量类型写在后面. 比如我们要声明一个长度为10的int型的数组,会写成这样: var a [10]int 数组的长度定义了之后不能改变,这点和C++以及Java是一样的.但是在我们日常使用的过程当中,除非我们非常确定数组长度不会发生变化,否则我们一般不会使用数组,而是使用切片(slice).…
什么是接口 在面向对象语言中,接口一般被定义为 :接口定义了一个对象的行为.它仅仅指定了一个对象应该做什么.具体怎么做(实现细节)是由对象决定的. 在 Go 中,一个接口定义为若干方法的签名.当一个类型定义了所有接口里的方法时,就说这个类型实现了这个接口.这和 OOP 很像.接口指定了一个类型应该包含什么方法,而该类型决定怎么实现这些方法. 比如 WashingMachine可以作为一个接口,并提供两个函数 Cleaning() 和 Drying().任何提供了 Cleaning() 和 Dry…