Go
文章平均质量分 61
冷月醉雪
这个作者很懒,什么都没留下…
展开
-
Go命令
由于作者不习惯该编辑器,只是贴出上本文的截图,详见:https://www.yuque.com/docs/share/1acbba92-8b2a-472d-8ec0-a584db3a8e7a原创 2017-10-30 09:59:35 · 690 阅读 · 0 评论 -
Go语言环境安装
由于作者不习惯该编辑器,只是贴出上本文的截图,详见:https://www.yuque.com/docs/share/57330e0f-78cc-4e54-b39d-c39c8f3c5d4b原创 2017-10-28 17:07:27 · 422 阅读 · 0 评论 -
Sublime Text
Go开发工具(Sublime Text)安装及配置下载Sublime Text:官方网站安装go sublime(破解版可能无法安装):安装指令Sublime Text 2 入门及技巧原创 2017-10-30 11:30:18 · 404 阅读 · 0 评论 -
Go程序实例分析
由于作者不习惯该编辑器,只是贴出上本文的截图,详见:https://www.yuque.com/docs/share/d0f7d946-cfb6-4523-b710-6bb4cff4df1f原创 2017-10-30 17:18:55 · 633 阅读 · 0 评论 -
Go方法method
方法methodGo中没有class,但依旧有method通过显示说明receiver来实现与某个类型的结合只能为同一个包中的类型定义方法Receiver可以是类型的值或指针(需要修改对象)不存在方法重载可以使用值或指针来调用方法,编译器会自动完成转换从某种意思上来说,方法是函数的语法糖,因为receiver其实就是方法所接收的第1个参数如果外部结构和嵌入结...原创 2017-11-07 09:42:14 · 461 阅读 · 0 评论 -
Go语言接口interface
接口interface接口是一个多个方法签名的集合只要某个类型拥有该接口的所有方法签名,即算实现该接口,无需显示声明实现了哪个接口,这称为Structural Typing接口只有方法声明,没有实现,没有数据字段接口可以匿名嵌入其他接口,或嵌入结构中将对象赋值给接口时,会发生拷贝,而接口内部存储的是指向这个复制品的指针,既无法修改复制品的状态,也无法获取指针只有当接口存储的...原创 2017-11-08 13:45:34 · 429 阅读 · 0 评论 -
Go语言基础语法
由于作者不习惯该编辑器,只是贴出上本文的截图,详见:https://www.yuque.com/docs/share/b2b3a5b2-97ec-4063-a216-a1a358192f3e原创 2017-10-30 17:33:56 · 407 阅读 · 0 评论 -
Go程序结构
由于作者不习惯该编辑器,只是贴出上本文的截图,详见:https://www.yuque.com/docs/share/de9c93eb-76f6-40c2-96ea-1376df0437d6原创 2017-10-30 16:53:24 · 605 阅读 · 0 评论 -
Go反射reflection
反射reflection反射可大大提高程序的灵活性,使得interface{}有更大的发挥余地反射使用typeOf和valueOf函数从接口中获取目标对象信息反射会将匿名字段作为独立字段(匿名字段本质)想要利用反射修改对象状态,前提是interface.data是settabele,即pointer-interface基本数据类型:复杂数据类型: pa...原创 2017-11-08 17:13:08 · 370 阅读 · 0 评论 -
Go语言条件语句
由于作者不习惯该编辑器,只是贴出上本文的截图,详见:https://www.yuque.com/docs/share/84fb297e-6028-43c8-be07-ed5bcb1b4a8b原创 2017-11-01 11:04:18 · 276 阅读 · 0 评论 -
Go语言循环语句
循环语句forGo只有for一个循环语句关键字,但支持3种形式初始化和步进表达式可以是多个值条件语句每次循环都会被重新检查,因此不建议在条件语句中使用函数,尽量提前计算好条件并以变量或常量代替左括号必须和条件语句在同一行 Go语言循环流程的流程图:Go语言提供了以下几种类型的循环处理语句: 循环控制语句Go语言支持以下几种循环控制语句: ...原创 2017-11-01 11:20:43 · 622 阅读 · 0 评论 -
Go并发concurrency
并发concurrency 很多人都是冲着Go大肆宣扬的高并发而忍不住跃跃欲试,但其实从源码的解析来看,goroutine只是官方实现的超级“线程池”而已。不过话说回来,每个实例4-5KB的栈内存占用和由于实现机制而大幅减少的创建和销毁开销,是制造Go号称高并发的根本原因。另外,goroutine的简单易用,也在语言层面上给予了开发者巨大的便利。并发不是并行:并发主要由切换时间片来...原创 2017-11-09 14:40:04 · 518 阅读 · 0 评论 -
Go语言选择语句
选择语句switch可以使用任何类型或表达式作为条件语句不需要解break,一旦条件符合自动终止如需继续执行下一个case,需使用fallthrough语句支持一个初始化表达式(可以是并行方式),右侧需跟分号左大括号必须和条件语句在同一行 本文参考:https://www.yuque.com/docs/share/4158224f-f0e9-4ed5-bb33-...原创 2017-11-01 11:35:26 · 456 阅读 · 0 评论 -
Go语言跳转语句
跳转语句goto,break,continue三个语法都可以配合标签使用标签名区分大小写,若不使用会造成编译错误break和continue配合标签可用于多层循环的跳出goto是调整执行位置,与其他2个语句配合标签的结果并不相同 Go语言break语句1.用于循环语句中跳出循环,并开始执行循环之后的语句2.break在switch(开关语句)中执行一条case后...原创 2017-11-01 12:07:50 · 2059 阅读 · 0 评论 -
Go语言指针
Go虽然保留了指针,但与其他编程语言不同的是,在Go当中不支持指针运算以及"->"运算符,而直接采用"."选择符来操作指针目标对象的成员。操作符"&"取变量地址,使用“*”通过指针间接访问目标对象默认值是nil而非NULL 一个指针变量可以指向任何一个值的内存地址。指针变量类似于变量和常量,在使用指针前需要声明。指针声明格式如下: var var_name ...原创 2017-11-01 16:07:46 · 440 阅读 · 0 评论 -
Go语言变量作用域
Go语言变量作用域作用域为已声明标识符所表示的常量、类型、变量、函数或包在源码中的作用范围。Go语言中变量可以在三个地方声明:函数内定义的变量称为局部变量;函数外定义的变量称为全局变量;函数定义中的变量称为形式参数; 局部变量在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。全局变量在函数体外声明的变量称之为全局变量...原创 2017-11-01 17:10:13 · 302 阅读 · 0 评论 -
Go项目目录管理
Golang的工程管理还是挺简单的,完全使用目录结构还有package名来推导工程结构和构建顺序。当然,首先要说的是环境变量$GOPATH,项目构建全靠它。这么说吧,想要构建一个项目,就要将这个项目添加到$GOPATH中,多个项目用“;”分隔。Golang项目目录一般有三个子目录·src存放源代码·pkg存放编译后生成的文件·bin存放编译后生成的可执行文件需要我们重点关注...原创 2017-11-10 11:11:59 · 1061 阅读 · 0 评论 -
Go 文件读写操作
使用io/ioutil进行读写文件ioutil提供了两个方法: func ReadFile(filename string) ([]byte, error) func WriteFile(filename string, data []byte, perm os.FileMode) error 读文件: package mainimpor...原创 2017-11-10 14:46:40 · 825 阅读 · 0 评论 -
Golang 日期时间格式format()
Go语言中日期时间格式format中的时间点是固定死的,必须使用time包的常量 本文参考:https://www.yuque.com/docs/share/66342f76-8a12-4d4d-b614-7e157cf8cd22原创 2017-11-10 15:08:26 · 4378 阅读 · 0 评论 -
Go语言特性
由于作者不习惯该编辑器,只是贴出上本文的截图,详见:https://www.yuque.com/docs/share/ea81bf9a-9cd2-45f4-9a71-59187279000f原创 2017-10-28 16:52:36 · 451 阅读 · 0 评论 -
Go语言数组
Go语言数组 定义数组的格式:var <varName> [n]<type>, n> = 0数组长度也是类型的一部分,因此具有不同长度的数组为不同类型注意区分指向数组的指针和指针数组数组在Go中为值类型数组之间可以使用==或!=进行比较,但不可以使用<或>可以使用new来创建数组,此方法返回一个指向数组的指针Go支持多纬数组...原创 2017-11-01 17:35:57 · 666 阅读 · 0 评论 -
Go语言Map(集合)
Map是一种无序的键值对的集合。Map最重要的一点是通过key来快速检索数据,key类似于索引,指向数据的值。Map是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map是无序的,我们无法决定它的返回顺序,这是因为Map是使用hash表实现的。 map类似其他语言中的哈希表或者字典,以key-value形式存储数据key必须是支持==或!=比较运算的类型Map查找...原创 2017-11-02 14:26:29 · 654 阅读 · 0 评论 -
Go语言范围(Range)
Go语言中rang关键字用于for循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引值,在集合中返回key-value对应的key值。实例 package mainimport "fmt"func main() { //这是我们使用range去求一个slice的和。使用数组跟这个很类似 n...原创 2017-11-02 15:25:16 · 545 阅读 · 0 评论 -
Go语言运算符
由于作者不习惯该编辑器,只是贴出上本文的截图,详见:https://www.yuque.com/docs/share/ad7fd581-dc48-41fd-9965-f0637fcaf9e6原创 2017-11-01 09:54:30 · 598 阅读 · 0 评论 -
Golang中的fmt用法
fmt包实现了格式化的I/O函数占位符通用占位符:%v值的默认格式。当打印结构体时,“加号”标记(%+v)会添加字段名%#v相应值的Go语法表示%T相应值的类型的Go语法表示%%字母上的百分号,并非值的占位符用法如下:package mainimport ( "fmt")type Sample struct { a int str转载 2017-11-13 13:42:12 · 12924 阅读 · 0 评论 -
Go语言函数
Go语言函数Function Go函数不支持嵌套、重载和默认参数但支持以下特性:无需声明原型、不定长度参数、多返回值、命名返回值参数、匿名函数、闭包定义函数使用关键字func,且左大括号不能另起一行函数也可以作为一种类型使用 不定参数不定参数的传递: 任意类型的不定参数: 如果你希望传任意类型的不定参数,可以指定类型为interface{},下...原创 2017-11-01 16:30:38 · 531 阅读 · 0 评论 -
Go匿名函数和闭包
匿名函数 匿名函数是指不需要定义函数名的一种函数实现方式。 在Go语言中,函数可以像普通变量一样被传递或使用,这与C语言的回调函数比较类似。不同的是,Go语言支持随时在代码里定义匿名函数。 匿名函数由一个不带函数名的函数声明和函数体组成,如下所示: 匿名函数可以直接赋值给一个变量或者直接执行: 闭包...原创 2017-11-14 10:30:29 · 6803 阅读 · 1 评论 -
Go错误处理
error接口 Go语言引入了一个关于错误处理的标准模式,即error接口,该接口的定义如下: 对于大多数函数,如果要返回错误,大致上都可以定义为如下模式, 将error作为多种返回值中的最后一个,但这并非是强制要求: 调用时的代码建议按如下方式处理错误情况: 示...原创 2017-11-14 14:47:04 · 1227 阅读 · 0 评论 -
os.Open()和os.OpenFile()的区别
从帮助文档上可以看出, Open()只能用于读取文件。 本文参考:https://www.yuque.com/docs/share/cf0caca2-298c-4796-b3e7-5980837fd545原创 2017-11-14 15:06:02 · 9091 阅读 · 0 评论 -
golang返回值为interface{}的类型判断
大家知道,golang对于不确定返回值可以用interface{}代替,这确实很方便,但是也带来了问题,那就是如何判断返回值是什么类型的?其实可以用反射也就是reflect来判断,通过函数reflect.TypeOf()1 即返回类型!本文参考:https://www.yuque.com/docs/share/5ae496e5-12b3-4966-be97-14f...转载 2017-11-14 15:17:59 · 5033 阅读 · 0 评论 -
golang 并发 面试
问题描述: 使用两个goroutine交替打印序列,一个goroutinue打印数字,另一个goroutine打印字母,最终结果如下: 12AB34CD45EF78GH910IJ package mainimport ( "fmt" "sync")func PrintNums(printChar chan in...原创 2017-11-14 15:53:18 · 2748 阅读 · 0 评论 -
Go语言递归函数
递归,就是在运行的过程中调用自己。语法格式如下: func recursion() { recursion() /* 函数调用自身 */}func main() { recursion()}() { recursion() /* 函数调用自身 */}func main() { recursion()}Go语言支持递归。但在使用递归时,需要设...原创 2017-11-06 10:12:31 · 827 阅读 · 0 评论 -
Fix cannot find package "golang.org/x/net/context"
编译错误信息go-sqlite3\sqlite3.go:153:2: cannot find package "golang.org/x/net/context" in any of:解决方案:cd srcmkdir golang.orgcd golang.orgmkdir xcd xgit clone [email protected]:golang/net.git --de...原创 2017-11-20 14:39:00 · 2660 阅读 · 1 评论 -
Go语言切片(Slice)
Go语言切片(Slice) Go语言切片是对数组的抽象 Go语言数组的长度不可改变,在特定场景中这样的集合就不太适用,Go提供了一种灵活,功能强悍的内置类型切片(动态数组),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。 切片Slice其本身并不是数组,它指向底层的数组;作为变长数组的替代方案,可以关联底层数组的局部或全部为引用类型...原创 2017-11-02 13:27:14 · 4108 阅读 · 0 评论 -
关于Go关键字defer的一些坑
defer意为延迟,在Go语言中用于延迟执行一个函数。它可以帮助我们处理容易忽略的问题,如资源释放、连接关闭等。但在时间使用过程中,有一些需要注意的地方(坑)。结论1.若函数中有多个defer,其执行顺序为先进后出,可以理解为栈。 package mainimport "fmt"func main() { for i := 0; i < 5; i++ {...原创 2017-11-15 15:11:53 · 758 阅读 · 0 评论 -
Go语言接口
Go语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。接口的定义 /* 定义接口 */type interface_name interface { method_name1 [return_type] method_name2 [return_type] method_name3 [retur...原创 2017-11-06 16:08:54 · 360 阅读 · 0 评论 -
Go语言开发工具
LiteIDELiteIDE是一款开源、跨平台的轻量级Go语言集成开发环境(IDE)。支持的操作系统Windows x86 (32-bit or 64-bit) Linux x86 (32-bit or 64-bit)下载地址 :http://sourceforge.net/projects/liteide/files/源码地址 :https://github.com/visu...原创 2017-11-06 16:24:16 · 4088 阅读 · 0 评论 -
Go并发编程之channel
Go语言提供的消息通信机制被称为channel。不要通过共享内存来通信,而应该通过通信来共享内存。channel是Go语言在语言级别提供的goroutine间的通信方式。我们可以使用channel在两个或多个goroutine之间传递消息。channel是进程间的通信方式,因此通过channel传递对象的过程和调用函数时的参数传递行为比较一致,比如也可以传递指针。如果需要跨进程通信,建议使...原创 2017-11-28 09:15:19 · 373 阅读 · 0 评论 -
G0 -- import使用以及._的作用解析
go中import用于导入包。导入之后就可以使用包中的代码。比如:import( "fmt")在代码中就可以使用fmt包中的方法,如:fmt.Println("hello world")1.使用点操作引入包时,可以省略包前缀:import( . "fmt")注意上面 fmt前多了 . 字符。代码中使用时:Println("he...原创 2017-11-21 09:30:28 · 363 阅读 · 0 评论 -
Golang连接SQLite、MySQL、ORacle
说明:go语言连接数据库不像JAVA那么方便,本文分别介绍了连接三种典型数据库的驱动以及连接方式:小型:SQLite;中型:MySQL;大型:Orace. 安装问题:1.32 位 windows 的安装 1_1.安装 sqlite3。到 http://www.sqlite.org/download.html 的页面中,找到 sqlite-dll-...原创 2017-11-20 17:30:29 · 2233 阅读 · 0 评论