Go
文章平均质量分 76
番茄炒蛋君
这个作者很懒,什么都没留下…
展开
-
七种排序算法(golang实现)
冒泡排序选择排序冒泡排序从左到右依次比较两个相邻元素,如果左边元素大于右边元素,就将两者交换;如果左边元素小于等于右边元素,不进行任何操作。Version1package mainimport "fmt"func main() { slice := []int{7, 5, 8, 4, 3, 2, 6, 9, 1} //执行次数 for i := 0; i < len(slice)-1; i++ { //比较次数 for j := 0; j < len(..原创 2021-08-02 07:26:34 · 611 阅读 · 0 评论 -
Go select(信道选择)、mutex(互斥锁)和异常处理
目录:select使用select随机选取MutexGo 异常处理select使用select 用于在多个发送/接收信道操作中进行选择func process1(ch chan string) { time.Sleep(10500 * time.Millisecond) ch <- "process successful"}func main() { c...原创 2019-11-12 17:12:24 · 391 阅读 · 0 评论 -
Go 缓冲信道
目录:缓冲信道声明使用for循环读写信道长度和容量WaitGroup缓冲信道声明当缓冲已满或者为空时,才会阻塞定义func main() { //声明缓冲信道a make初始化容量 a:=make(chan int,3) a<-1 a<-2 a<-3 //a<-4 fmt.Println(<-a) fmt.Println(...原创 2019-11-12 16:07:13 · 213 阅读 · 0 评论 -
Go 协程、信道
目录:Go 协程Go 信道Go 协程Go 协程可以看作是轻量级线程。与线程相比,创建一个Go协程的成本很小。因此在Go应用中,常常会看到有数以千计的Go协程并发地运行Go 协程相比于线程的优势相比于线程而言,Go 协程的成本低。堆栈大小只有若干kb,并且可以根据应用的需求进行增减。而线程必须制定堆栈的大小,其堆栈是固定不变的。Go协程会复用(Multiplex)数...原创 2019-11-12 15:35:40 · 212 阅读 · 0 评论 -
Go 接口(二)
目录:指针接收器与值接收器实现多个接口接口嵌套接口零值指针接收器与值接收器当用指针接收器来实现接口,需要注意。当方法赋值给接口类型时,需要传递地址给接口type Describer interface { Describe()}type Person struct { name string age int}func (p Person) Describ...原创 2019-11-12 12:02:15 · 132 阅读 · 0 评论 -
Go 接口(一)
目录:接口声明接口使用空接口类型断言类型可以和接口相互比较接口声明在面向对象的领域里,接口一般是这样定义的: 接口定义一个对象的行为。接口值指定了对象应该做什么,至于如何实现这个行为,则由对象本身去确定。接口是方法签名的集合接口指定了一个类应该具有的方法,并由改类型决定如何实现这些方法定义一个接口package mainimport "fmt"// 定...原创 2019-11-12 09:15:55 · 109 阅读 · 0 评论 -
Go 方法
目录:方法的声明指针接收器与值接收器匿名字段方法在方法中使用值接收器,在函数中使用值参数在方法中使用指针接收器, 在函数中使用指针参数在非结构体上的方法方法什么是方法方法其实就是一个函数,在 func 这个关键字和方法名中间加入了一个特殊的接收器类型。接收器可以使结构体类型或者是非结构体类型。接收器是可以在方法的内部访问的。方法定义package mainim...原创 2019-11-11 18:16:14 · 112 阅读 · 0 评论 -
Go 结构体
目录:结构体的声明匿名结构体结构体零值结构体字段嵌套结构体导出结构体和字段结构体相等性结构体的声明什么是结构体结构体是用户定义的类型, 表示若干个字段(field)的集合。有时应该吧数据整合在一起,而不是让这些数据没有联系例如一个职员有firstname、lastname和age三个属性,而吧这些属性组合在一个结构体employee中和很合理。声明type...原创 2019-11-11 16:21:50 · 274 阅读 · 0 评论 -
Go 指针
目录:指针定义指针零值指针的解引用不要向函数传递数组的指针,而应该使用切片Go不支持指针运算指针定义什么是指针指针是一种存储变量内存地址的变量如图所示,变量a存储了变量b的内存地址,此时a指向b,a就是指针指针声明* 反解 解引用& 取地址符号func main() { b:=156 // 定义指针a,得到b的地址 var a *int=...原创 2019-11-11 14:36:36 · 225 阅读 · 0 评论 -
Go Map(哈希)
目录:Map定义并初始化Map 操作Map 是引用类型Map 相等性Map 内的键值对是无序的什么是MapMap是Go中内置的一种数类型,Map内的键值对是无序的,将键与值建立对应关系,可以通过键来获取对应的值。Go中Map定义两种方式:直接定义map类型 map[key的类型]value的类型,此时默认为nilfunc main() { var a m...原创 2019-11-11 11:33:27 · 623 阅读 · 0 评论 -
Go 切片
目录:切片定义修改切片切片的长度和容量通过make函数来初始化切片切片的函数传递类型切片定义切片是有数组建议的一种方便、灵活且功能强大的包装(wrapper)。切片本身不拥有任何数据,它只是对现有数组的引用创建一个切片第一种方式package mainimport "fmt"func main() { a:=[9]int{1,2,43} fmt.Pr...原创 2019-11-05 17:04:31 · 176 阅读 · 0 评论 -
Go 数组
目录:Go中的数组for 循环遍历数组多维数组Go中的数组在Go语言中,数组是同一类型元素的集合,而不像python,里面可有多种数据类型。Go语言中不约需混合不同类型的元素,例如包含字符串和整数的数组。当时interface{}类型的数组,可以包含任意类型数组的声明示例:// [3]表示数组长度,int表示数组内元素类型var a [3]int=[3]int{1,...原创 2019-11-05 15:38:29 · 231 阅读 · 1 评论 -
Go 流程控制语句
目录:if 语句for 循环Switch 语句if语句示例:package mainimport ( "fmt")func main() { a := 11 //大括号必须和条件在一行 if a < 10 { fmt.Println("<10"); } else if a > 10 { fmt.Println(">10");...原创 2019-11-05 14:28:28 · 115 阅读 · 0 评论 -
Go 包管理
目录:GOPATH引用包的小示例GOPATHGOPATH环境变量是Go语言的工作区windows默认为:C:\Users\admin\go源码一般存放在:C:\Users\admin\go\src 下当使用第三方包时,在src下新建 github.com/作者名/源码引用包的小示例目录结构:mypackage在Go语言中,函数名首字母大写表示非私有g...原创 2019-11-05 11:51:09 · 158 阅读 · 0 评论 -
Go 函数
目录:函数声明函数多返回值空白符函数的可变长参数函数闭包函数默认返回值函数声明函数声明的通用语法:func functionname (参数1 参数1的类型, 参数2 参数2的类型) 函数返回值类型 { // 函数体}带返回值的函数package mainimport "fmt"func main() { a := test(1, 2) fmt.Pr...原创 2019-11-05 09:26:05 · 193 阅读 · 0 评论 -
Go语言基础
目录:Go语言介绍Go HelloWorldGo 变量定义Go 变量类型Go的常量Go语言介绍Go 即为Golang,是Google公司2009年对外公开的一门编程语言。Go 是静态类型语言,是编译型语言。编译型语言:源代码编译生成机器语言,然后由机器直接执行机器码即可执行。Go语言特性跨平台的编译型语言语法接近C语言管道(channel),切片(slic...原创 2019-11-04 16:47:51 · 286 阅读 · 0 评论