文章分类 -  Go

摘要:Go1.13版本之后引入了数字字面量语法,这样便于开发者以二进制、八进制或十六进制浮点数的格式定义数字。 fmt.Printf("%s\n", "test string") // 格式化字符串类型的值 fmt.Printf("%d\n", "100") // 十进制整数类型表示 fmt.Printf 阅读全文
posted @ 2020-09-08 17:20 欧-阳 阅读(551) 评论(0) 推荐(0)
摘要:最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决? 一、gomod go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module 阅读全文
posted @ 2020-08-23 15:11 欧-阳 阅读(138) 评论(0) 推荐(0)
摘要:go语言里自带的net/http包提供了http客户端和服务端的实现,也就是说go语言原生支持web服务开发,下面我们来看一下go原生的http服务端实现吧 一、go简单实现web Server 1.1、代码部分 package main import ( "fmt" "io" "net/http" 阅读全文
posted @ 2020-08-23 14:48 欧-阳 阅读(1051) 评论(0) 推荐(0)
摘要:一、MySQL介绍 MySQL属于传统开源的关系型数据库产品,其开放式的架构使得用户的选择性很强,而且随着技术的逐渐成熟,MySQL支持的功能也越来越多,性能也在不断地提高,对平台的支持也在增多,此外,社区的开发与维护人数也很多。当下,MySQL因为其功能稳定、性能卓越,且在遵守GPL协议的前提下, 阅读全文
posted @ 2020-08-23 14:10 欧-阳 阅读(627) 评论(1) 推荐(1)
摘要:一、说明 1.1、什么是socket Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现,网络的Socket数据传输是一种特殊的I/O,Socket也是一种文 阅读全文
posted @ 2020-08-21 15:07 欧-阳 阅读(1354) 评论(0) 推荐(0)
摘要:一、redis介绍 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的一个完全开源免费的,遵守BSD协议的高性能key-value数据库。 Redis 的特点有: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候 阅读全文
posted @ 2020-08-17 18:31 欧-阳 阅读(485) 评论(0) 推荐(0)
摘要:当我们写好一段go语言的代码后,想测试下这段代码执行的结果是否符合预期时就可以用到单元测试, 单元测试文件必须以:_test.go结尾 写好单元测试文件后,到需要测试的目录下执行:go test查看测试结果(PASS就是正常的,FAILD是不正常的),-v显示自定义的输出信息,具体看下面示例 示例一 阅读全文
posted @ 2020-08-12 17:50 欧-阳 阅读(366) 评论(0) 推荐(0)
摘要:go语言里的time包里有两个方法实现了定时器和一次性定时器,具体看下面例子: 一、间隔指定时长重复执行定时器示例 package main import ( "fmt" "time" "runtime" ) // 定时器一:间隔指定时间执行一次(定时器就是通过channel实现的) func ma 阅读全文
posted @ 2020-08-05 18:26 欧-阳 阅读(164) 评论(0) 推荐(0)
摘要:到我们启动多线程时,可能某一个子线程的操作会出现不重要的panic错误(只需要打印日志即可,不用结束整个进程),这时我们就可以用recover来捕获panic错误,来进行处理,下面是具体实例: package main import ( "fmt" "time" "runtime" ) // 定义t 阅读全文
posted @ 2020-08-05 17:56 欧-阳 阅读(742) 评论(0) 推荐(0)
摘要:线程(goroutine)与管道(channel)的基本使用前面两篇文章已经介绍了,这篇文章介绍下多线程通讯与多线程操作管道。 实例 1.1、一个线程往管道里写数据、另一个线程从管道里读数据示例 package main import ( "fmt" "time" ) func writeChan( 阅读全文
posted @ 2020-08-04 18:24 欧-阳 阅读(2586) 评论(0) 推荐(0)
摘要:go语言里的管道(channel)类似unix中的管道(pipe)。 channel里的数据遵循先进先出的原则。 不加锁多个goroutine同时操作管道里的数据时不会出现数据冲突。 channel是有类型的。 channel定义与操作 1、int类型的管道定义、初始化与写和读数据 package 阅读全文
posted @ 2020-08-04 16:51 欧-阳 阅读(670) 评论(0) 推荐(0)
摘要:Go语言最大的特色就是从语言层面支持并发(Goroutine),Goroutine是Go中最基本的执行单元。事实上每一个Go程序至少有一个Goroutine:主Goroutine。当程序启动时,它会自动创建。 为了更好理解Goroutine,现讲一下进程、线程和协程的概念 进程:进程是程序在操作系统 阅读全文
posted @ 2020-08-03 18:51 欧-阳 阅读(167) 评论(0) 推荐(0)
摘要:在使用go语言开始时主动抛出错误时可以用errors包和fmt包来生成简单错误信息,实例如下: package main import ( "fmt" "errors" ) func main() { // 使用errors.New()方法生成错误提示 fmt.Println(errors.New( 阅读全文
posted @ 2020-07-31 17:58 欧-阳 阅读(188) 评论(0) 推荐(0)
摘要:作为先天具有高并发的go语言,经常用于网络传输,go语言为我们提供了json的数据封装, 便于数据的交换和解析。下面来看看go语言中的json使用。代码最为明显。 JSON(JavaScript Object Notation) 是一种轻量级的数据传输格式。类似于XML,传输效率高,易于人阅读和编写 阅读全文
posted @ 2020-07-30 14:40 欧-阳 阅读(291) 评论(0) 推荐(0)
摘要:当我们执行程序时需要通过命令行传参数时该如何处理? 这里记录下Go语言里的命令行参数的使用。 一、os.Args() 命令行参数使用 程序获取运行程序时给出的参数,可以通过os包来实现。先看代码: package main import ( "os" "fmt" ) func main() { // 阅读全文
posted @ 2020-07-21 16:59 欧-阳 阅读(263) 评论(0) 推荐(0)
摘要:bufio模块通过对io模块的封装,提供了数据缓冲功能,能够一定程度减少大块数据读写带来的开销。 实际上在bufio各个组件内部都维护了一个缓冲区,数据读写操作都直接通过缓存区进行。当发起一次读写操作时,会首先尝试从缓冲区获取数据;只有当缓冲区没有数据时,才会从数据源获取数据更新缓冲。 一、文件的读 阅读全文
posted @ 2020-07-20 18:48 欧-阳 阅读(459) 评论(0) 推荐(0)
摘要:Go 语言标准库中的 fmt 包提供了打印函数将数据以字符串形式输出到控制台、文件、其他满足 io.Writer 接口的至以及其他字符串中 一、输出类方法 package main import "fmt" func main() { fmt.Fprintf(os.Stdout, "%s - out 阅读全文
posted @ 2020-07-20 17:18 欧-阳 阅读(416) 评论(0) 推荐(0)
摘要:Go语言有一个特殊的函数init,先于main函数执行,实现包级别的一些初始化操作。 对于init 函数来说:每个包可以包含任意多个 init 函数,这些函数都会在程序执行开始的时候被调用。所有被编译器发现的 init 函数都会安排在 main 函数之前执行。init 函数用在设置包、初始化变量或其 阅读全文
posted @ 2020-07-18 15:28 欧-阳 阅读(368) 评论(0) 推荐(0)
摘要:反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样 阅读全文
posted @ 2020-07-16 18:53 欧-阳 阅读(170) 评论(0) 推荐(0)
摘要:空接口可以存储任意类型的值,那我们如何获取其存储的具体数据类型呢?这里就用到了类型断言,具体示例如下: 类型断言示例一: package main import "fmt" // 定义结构体 type Student struct { Name string Sex string } // Test 阅读全文
posted @ 2020-07-10 15:54 欧-阳 阅读(309) 评论(0) 推荐(0)