golang 创建型设计模式 单例模式

golang 创建型设计模式 单例模式 缘起 最近复习设计模式 拜读谭勇德的<<设计模式就该这样学>> 本系列笔记拟采用golang练习之 单例模式 单例模式(Singleton Pattern)指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点,属于创建型设计模式。 _ 三种常见单例模式 饿汉式单例 类/模块初始化时立即创建的静态全局单例 双重检查单例 提供获取单例的方法 在该方法中通过双重检查静态实例是否为null, 以延迟初始化全局单例 首次检查不加同步锁, 二次检查加同步锁...阅读全文

简书 2021-01-31 00:32:39 ioly

go学习(第一天)

我是名PHP工作者,在工作中,PHP会有些局限性,就比如前段时间,就听到老大讲,某某部分用PHP写太慢了,换用go来完成。是的,PHP是最好的语言确实带有调侃的味道,它只是一种易上手的语言。其实所有的语言都只是完成项目的一种工具,这个不行就用其他的来弥补就好了。于是,今天开始了学习go的旅程。 Go 语言环境配置 因为我的电脑是Mac,所以我只使用了Mac的安装方式。 UNIX/Linux/Mac OS X, 和 FreeBSD 安装 1.下载 go1.9.2.linux-amd64.tar.g...阅读全文

简书 2021-01-31 00:32:39 白穹雨

Golang 入门系列(一)Go环境搭建

安装 GoGo语言的优劣,这里就不介绍了,下面直接讲Go 的安装:Go 的官方网站:http://golang.org/(需要FQ软件)国内下载地址:http://www.golangtc.com/download下载对应平台的安装包。注意区分32位还是64位操作系统。安装包下载完成之后,安装过程很简单,傻瓜式下一步到底就好了。 Go 环境变量安装go 的时候,安装程序会自动把相关目录写到系统环境。但是如果是zip 的安装,需要自己手动添加。主要配置以下几个:GOROOT:Go 安装后的根目录(...阅读全文

51CTO博客 2021-01-29 21:21:35 mb5fe94b3e552d9

Golang 入门系列(二)学习Go语言需要注意的坑

上一章节我们已经了解了 Go 环境的配置,不了解的,请查看前面的文章 https://www.cnblogs.com/zhangweizhong/p/9459945.html,本章节我们将学习 Go 语言的基础语法中需要注意的点。 GO语言基础语法go 的基础语法,我这里就不细说了,大家可以查看这个文章,学习Go 详细的语法:http://www.runoob.com/go/go-basic-syntax.html 最好是对照上面的例子,一个一个敲出来,这样效果最好。下面是一个Go 程序的基本结...阅读全文

51CTO博客 2021-01-29 21:21:17 mb5fe94b3e552d9

Golang 入门系列(三)Go语言基础知识汇总

前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html,在这篇文章中,下面为初学者汇总下Go语言基础知识: 1. Go 程序的基本结构下面是一个Go 程序的基本结构,包含(包声明,引入包,函数等)package main fmt.Println( 2. 数据类型go内建基本数据类型包括基本数据类型和高级数据类型1. 基本数据类型 布尔类型(bool) ...阅读全文

51CTO博客 2021-01-29 21:20:42 mb5fe94b3e552d9

Golang 入门系列(四)如何理解interface接口

前面讲了很多Go 语言的基础知识,包括go环境的安装,go语言的语法等,感兴趣的朋友,可以先看看之前的文章。https://www.cnblogs.com/zhangweizhong/category/1275863.html今天就正式开始写Go 的代码,讲讲如何理解interface接口。 什么是interface接口interface 是GO语言的基础特性之一。可以理解为一种类型的规范或者约定。它跟java,C# 不太一样,不需要显示说明实现了某个接口,它没有继承或子类或“implement...阅读全文

51CTO博客 2021-01-29 21:20:21 mb5fe94b3e552d9

Golang 入门系列(五)GO语言中的面向对象

前面讲了很多Go 语言的基础知识,包括go环境的安装,go语言的语法等,感兴趣的朋友可以先看看之前的文章。https://www.cnblogs.com/zhangweizhong/category/1275863.html。今天讲讲GO语言中的面向对象。 GO语言中的面向对象其实GO并不是一个纯面向对象编程语言。它没有提供类(class)这个关键字,只提供了结构体(struct)类型。java或者C# 里面,结构体(struct)是不能有成员函数的。然而,Go语言中的结构体(struct)可以...阅读全文

51CTO博客 2021-01-29 20:52:00 mb5fe94b3e552d9

理解Golang中的协程(Goroutine)|Golang 入门系列(六)

前面讲的都是一些Go 语言的基础知识,感兴趣的朋友可以先看看之前的文章。https://www.cnblogs.com/zhangweizhong/category/1275863.html。今天就来讲讲go 里面的高级功能,也是go语言重要的特性:Go协程(Goroutine)。 什么是Go协程Go协程(Goroutine)是与其他函数同时运行的函数。可以认为Go协程是轻量级的线程,由Go运行时来管理。在函数调用前加上go关键字,这次调用就会在一个新的goroutine中并发执行。当被调用的函...阅读全文

51CTO博客 2021-01-29 20:51:47 mb5fe94b3e552d9

简单方便的在Golang中使用Redis【Golang 入门系列】七

安装1. Redis 的安装很简单,我这里测试直接用的是windows 的版本。如何安装就不细说了。想了解的可以看之前的文章:https://www.cnblogs.com/zhangweizhong/category/771056.html 2. golang 客户端,用的是 go-redis, 1. go get github.com/go-redis 2. 接着在代码中导入此包即可: import "github.com/go-redis/redis" 基本操作创建Redis连接客户端通过...阅读全文

51CTO博客 2021-01-29 20:51:27 mb5fe94b3e552d9

使用cron创建定时任务【Golang 入门系列八】

1、cron 表达式的基本格式 Go 实现的cron 表达式的基本语法跟linux 中的 crontab基本是类似的。cron(计划任务),就是按照约定的时间,定时的执行特定的任务(job)。cron 表达式表示一个时间集合,使用 6 个空格分隔的字段表示。每个子表达式都描述了一个单独的日程细节域是否强制允许值允许特殊字符SecondsYES0-59, - * /MinutesYES0-59, - * /HoursYES0-23, - * /Day of monthYES1-31, - * ? ...阅读全文

51CTO博客 2021-01-29 20:50:48 mb5fe94b3e552d9

如何读取yaml,json,ini等配置文件【Golang 入门系列九】

前面已经讲过一些Go语言的基础知识,感兴趣的朋友可以先看看之前的文章。https://www.cnblogs.com/zhangweizhong/category/1275863.html。实际项目中,还有一个比较重要的基础功能,就是读取相关的配置文件。今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的。 1. json使用JSON 应该比较熟悉,它是一种轻量级的数据交换格式。层次结构简洁清晰 ,易于阅读和编写,同时也易于机器解析和生成。 1. 创建 conf.jso...阅读全文

51CTO博客 2021-01-29 20:50:31 mb5fe94b3e552d9

如何使用mysql数据库【Golang 入门系列十】

之前,已经讲过一些Golang的基础的东西,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/category/1275863.html,今天简单介绍下Golang是如何使用mysql数据库的。由于Go本身不提供具体数据库驱动,只提供驱动接口和管理。各个数据库驱动需要第三方实现,并且注册到Go中的驱动管理中。github上面的mysql驱动有好几个,我在这里选择的https://github.com/go-sql-driver/mysql。 ...阅读全文

51CTO博客 2021-01-29 20:50:13 mb5fe94b3e552d9

介绍一个超好用的orm库gorm【Golang 入门系列十二】

之前在已经介绍了用的github.com/go-sql-driver/mysql 访问数据库,不太了解的可以看看之前的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html。实际上,为提高开发效率,一般都会使用一些orm框架,把数据库层屏蔽,用户看到的只有对象而无需我们手动做一些转换,这样在使用的时候就非常方便。这种操作方式基本上已经成了标准做法。golang也有很多优秀的orm框架,今天就来介绍介绍gorm。Gorm的功能h...阅读全文

51CTO博客 2021-01-29 20:49:24 mb5fe94b3e552d9

如何使用beego快速开发web系统【Golang 入门系列十三】

接着之前的内容,前面已经讲过很多Golang的基础语法,mysql的使用,redis的使用,也讲了orm框架,如何创建一个webapi 服务等等,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/category/1275863.html,今天要来说一说,如何用beego开发web应用。 介绍beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,同时...阅读全文

51CTO博客 2021-01-29 20:48:59 mb5fe94b3e552d9

defer, panic和recover用法【Golang 入门系列十四】

以前讲过golang 的基本语法。但是,只是讲了一些基础的语法,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/category/1275863.html,前段时间有人问我defer,recover的用法。所以,还是统一的总结一下相关的关键字吧。 其实,Go语言是不支持 try…catch…finally 这种异常处理的,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。因为开发者很容易滥用异常,甚至一个小小的错...阅读全文

51CTO博客 2021-01-29 20:47:36 mb5fe94b3e552d9

defer, panic和recover用法【Golang 入门系列十四】

以前讲过golang 的基本语法。但是,只是讲了一些基础的语法,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/category/1275863.html,前段时间有人问我defer,recover的用法。所以,还是统一的总结一下相关的关键字吧。 其实,Go语言是不支持 try…catch…finally 这种异常处理的,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。因为开发者很容易滥用异常,甚至一个小小的错...阅读全文

51CTO博客 2021-01-29 20:47:32 mb5fe94b3e552d9

如何快速理解go的并发?【Golang 入门系列十五】

前面已经讲过很多Golang系列知识,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/category/1275863.html,接下来要说的是golang的并发,其实之前简单介绍过协程(goroutine)和管道(channel) 等基础内容,只是比较简单,只讲了基本的语法。今天就详细说说golang的并发编程。 一、并发和并行Go是并发语言,而不是并行语言。所以我们在讨论,我们首先必须了解什么是并发,以及它与并行性有什么不同。 什么是并...阅读全文

51CTO博客 2021-01-29 20:47:10 mb5fe94b3e552d9

锁的使用场景主要涉及到哪些?读写锁为什么会比普通锁快【Golang 入门系列十六】

前面已经讲过很多Golang系列知识,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/category/1275863.html,接下来要说的是golang的锁的使用场景主要涉及到哪些?读写锁为什么会比普通锁快。 一、什么场景下需要用到锁当程序中就一个线程的时候,是不需要加锁的,但是通常实际的代码不会只是单线程,有可能是多个线程同时访问公共资源,所以这个时候就需要用到锁了,那么关于锁的使用场景主要涉及到哪些呢?1. 多个线程在读相同的数据时...阅读全文

51CTO博客 2021-01-29 20:46:42 mb5fe94b3e552d9