Go学习笔记
文章平均质量分 52
weiaiyisheng_ljj
这个作者很懒,什么都没留下…
展开
-
Go 接口
如果说goroutine和channel是Go并发的两大基石,那么接口是Go语言编程中数据类型的关键。在Go语言的实际编程中,几乎所有的数据结构都围绕接口展开,接口是Go语言中所有数据结构的核心。 Go语言中的接口是一些方法的集合(method set),它指定了对象的行为:如果它(任何数据类型)可以做这些事情,那么它就可以在这里使用。特点:Go语言的接口的独特之处在于它是【隐式实现】。...原创 2018-04-30 12:10:11 · 128 阅读 · 0 评论 -
Go语言的坑二
转自:https://i6448038.github.io/2017/10/06/GolangDetailsTwo/Golang中函数被看做是值,函数值不可以比较,也不可以作为map的key请问以下代码能编译通过吗? import ( "fmt" ) func main(){ array := make(map[int]func (...转载 2018-08-01 15:27:35 · 603 阅读 · 0 评论 -
Go语言的坑一
转自:https://i6448038.github.io/2017/07/28/GolangDetails/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io Golang是我最喜欢的一门语言,它简洁、高效、易学习、开发效率高、还可以编译成机器码…虽然它一出世,就饱受关注,而且现在在市面上逐渐流行开来...转载 2018-08-01 15:25:57 · 1036 阅读 · 0 评论 -
Go 单元测试和压力测试
开发程序其中很重要的一点是测试,我们如何保证代码的质量,如何保证每个函数是可运行,运行结果是正确的,又如何保证写出来的代码性能是好的,我们知道单元测试的重点在于发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决,而性能测试的重点在于发现程序设计上的一些问题,让线上的程序能够在高并发的情况下还能保持稳定。本小节将带着这一连串的问题来讲解Go语言中如何来实现单元测试和性能测试。Go语言中...转载 2018-06-27 16:03:51 · 1285 阅读 · 0 评论 -
GO context包源代码剖析
// Copyright 2014 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.// Package context defines the Context t...原创 2018-06-03 15:51:31 · 538 阅读 · 0 评论 -
Go语言中的方法
1.1 方法声明 方法的声明和普通函数类似,只是在函数名字前面多了一个参数。这个参数把这个方法绑定到这个参数对应的类型上 import ( "fmt" ) type Point struct { x, y int } func fun() { fmt.Println("我是一个普通的 fun") } func (p Point) f原创 2018-04-29 21:44:35 · 206 阅读 · 0 评论 -
解析GO语言中的 deter
延迟函数调用(defer) Go语言中延迟函数defer充当着 cry...catch 的重任,使用起来也非常简便,然而在实际应用中,很多人并没有真正搞明白defer、return和返回值之间的执行顺序,从而掉进坑中,今天我们就来揭开它的神秘面纱!12先来运行下面两段代码: A. 无名返回值的情况package mainimport ( "fmt")func main()...原创 2018-04-29 17:17:21 · 1034 阅读 · 0 评论 -
GO函数
1.1 函数声明 每个函数声明都包含一个名字,一个形参列表,一个可选的返回列表以及函数体func fun(x,y float64) float{ return 100.00}也可以func fun(x float64,y float64) float{ return 100.00}1.2函数递归 函数可以递归调用,这就意味着函数...原创 2018-04-29 16:01:54 · 727 阅读 · 0 评论 -
Go程序结构
1.1 名称Go中函数,变量,常量,类型,语句标签和包的名称遵循一个简单的命名规则:名称的开头是一个字母或下划线,并且区分大小写注:实体的第一个字母的大小写决定了其可见性是否可以跨包。如果名字是大写字母的开头,它是导出的,意味着它对包外可见和可访问的,可以被包外的其他程序所引用(拷贝),像 fmt 包中的 Printf.包名总是由小写字母组成。1.2 声明声明给一个实体命名,并...原创 2018-04-28 21:10:14 · 261 阅读 · 0 评论 -
Go使用 channel(阻塞通道) 实现生产者消费者模型
package mainimport ( "fmt" "time")func producter(name string, ch chan int) { for i := 0; i < 4; i++ { fmt.Println(name, "product :", i) ch <- i }}func consumer(name string, ch ch...原创 2018-05-02 09:56:12 · 843 阅读 · 0 评论 -
GO语言使用共享变量实现并发
1.1 竞态 在串行程序中(即程序中只有一个goroutine),程序中各个步骤的执行顺序由程序逻辑来决定。 竞态是指在多个 goroutine 按照某些交错顺序执行时程序无法给出正确的结果。竞态对于程序是致命的,因为它们可能潜伏在程序中,出现频率很低,不易重现。1.2 互斥锁:sync.Mutex 其中Mutex为互斥锁,Lock()加锁,Unlock()解锁,使用Lock(原创 2018-05-01 11:01:52 · 1168 阅读 · 0 评论 -
Go 通道(channel)
注:自己踩的一个:如果主函数创建一个通道(chan),调用的函数把这个通道关闭,那么往这个通道写数据就会崩溃,但是读值得话,就是这个类型的默认值如果说goroutine 是 Go 程序并发的执行体,通道就是它们之间的连接。通道是可以让一个 goroutine 发送特定值到另一个 goroutine 中的通信机制。每一个通道是一个具体类型的导管,叫做通道的元素类型。package main...原创 2018-04-30 21:08:58 · 205 阅读 · 0 评论 -
Go 的goroutine(协程)
goroutine在Go里,每一个并发执行的活动称为 goroutine 。当一个程序启动时,只有一个 goroutine 来调用 main() 函数,称它为主 goroutine fun() //调用 fun(),等待它返回go fun() //新建一个调用 fun() 的goruntine ,不用等待原创 2018-04-30 20:28:42 · 169 阅读 · 0 评论 -
Go 基本数据类型
GO 的数据类型分为四大类:基础类型(basic type),聚合类型(aggregate type),引用类型(reference type),接口类型(interface type)。下面讲的是基础类型:number,string, bool。其它的会在后面的博客涉及到1.1 整数有符号整数: int8 int16 int32 int64无符号整数 uint8原创 2018-04-30 15:02:45 · 177 阅读 · 0 评论 -
Go语言的坑三
转自:https://i6448038.github.io/2018/07/18/golang-mistakes/不要对Go并发函数的执行时机做任何假设请看下列的列子: import ( "fmt" "runtime" "time" ) func main(){ names := []string{"lily", "...转载 2018-08-01 15:28:47 · 5890 阅读 · 0 评论