Go语言学习
rickiyang
这个作者很懒,什么都没留下…
展开
-
Go基础语法学习
Go语言基础Go是一门类似C的编译型语言,但是它的编译速度非常快。这门语言的关键字总共也就二十五个,比英文字母还少一个,这对于我们的学习来说就简单了很多。先让我们看一眼这些关键字都长什么样:下面列举了 Go 代码中会使用到的 25 个关键字或保留字:breakdefaultfuncinterfaceselectcasedefergomapstructc...原创 2019-03-17 15:08:33 · 386 阅读 · 0 评论 -
Go中的反射reflect
前面我们在学习到struct结构体的时候,因为结构体中的字段首字母大写,而我们想把json文件映射到该结构体上时,需要在在结构体字段后面加上json标签,表明结构体字段和json字段的映射关系。这其中就用到了反射的方式去获取标签,取出该标签对应的json字段然后存储到结构体字段上。Go语言中提供了反射的包为reflect。在 reflect 包中,主要通过两个函数TypeOf() 和ValueO...原创 2019-05-11 08:57:08 · 162 阅读 · 0 评论 -
Go中的fmt几种输出的区别和格式化方式
在日常使用fmt包的过程中,各种眼花缭乱的print是否让你莫名的不知所措呢,更让你茫然的是各种格式化的占位符。。简直就是噩梦。今天就让我们来征服格式化输出,做一个会输出的Goer。fmt.Print有几个变种:Print: 输出到控制台,不接受任何格式化操作Println: 输出到控制台并换行Printf : 只可以打印出格式化的字符串。只可以直接输出字符串类型的变量(不可以输出别的...原创 2019-05-11 17:30:16 · 1587 阅读 · 0 评论 -
Go中配置文件读取的几种方式
日常开发中读取配置文件包含以下几种格式:json 格式字符串K=V 键值对xml 文件yml 格式文件toml 格式文件前面两种书写简单,解析过程也比较简单。xml形式书写比较累赘,yml是树形结构,为简化配置而生,toml是一种有着自己语法规则的配置文件格式,我们一一来看使用方式,各位看官自行比较哪种更加实用。1.读取json格式的文件package mainimport...原创 2019-05-17 07:27:33 · 17844 阅读 · 0 评论 -
Go中的日志及第三方日志包logrus
有别的语言使用基础的同学工作中都会接触到日志的使用,Go中自然也有log相关的实现。Go log模块主要提供了3类接口,分别是 “Print 、Panic 、Fatal ”,对每一类接口其提供了三种调用方式,分别是 “Xxxx 、Xxxxln 、Xxxxf”,基本和fmt中的相关函数类似。1. Go中的log包1. 基本使用log.Print:打印日志,和fmt包没什么区别,只是加上了上面...原创 2019-05-26 15:36:54 · 3483 阅读 · 0 评论 -
Go中的并发编程和goroutine
并发编程对于任何语言来说都不是一件简单的事情。Go在设计之初主打高并发,为使用者提供了goroutine,使用的方式虽然简单,但是用好却不是那么容易,我们一起来学习Go中的并发编程。1. 并行和并发并行(parallel): 指在同一时刻,有多条指令在多个处理器上同时执行。并发(concurrency): 指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进...原创 2019-05-18 17:08:18 · 194 阅读 · 0 评论 -
Go中的异常处理
1. errors包Go 有一个预先定义的 error 接口类型 :type error interface { Error() string}错误值用来表示异常状态。Go也提供了一个包:errors,errors 包中有一个 errorString 结构体实现了 error 接口 。任何时候当你需要一个新的错误类型,都可以用 errors包的 errors.New...原创 2019-05-23 22:00:09 · 650 阅读 · 1 评论 -
Go orm框架gorm学习
之前咱们学习过原生的Go连接MYSQL的方法,使用Go自带的"database/sql"数据库连接api,"github.com/go-sql-driver/mysql"MYSQL驱动,通过比较原生的写法去写sql和处理事务。目前开源界也有很多封装好的orm操作框架,帮我们简省一些重复的操作,提高代码可读性。gorm就是这样的一款作品,我们来学习一下gorm的操作流程。安装go get -u ...原创 2019-06-05 14:00:44 · 4376 阅读 · 0 评论 -
Viper-Go一站式配置管理工具
什么是ViperViper是一个方便Go语言应用程序处理配置信息的库。它可以处理多种格式的配置。它支持的特性:设置默认值从JSON、TOML、YAML、HCL和Java properties文件中读取配置数据可以监视配置文件的变动、重新读取配置文件从环境变量中读取配置数据从远端配置系统中读取数据,并监视它们(比如etcd、Consul)从命令参数中读物配置从buffer中读取调...原创 2019-06-07 00:09:09 · 670 阅读 · 0 评论 -
Gin框架日常使用--高频api使用示例
Go web框架目前有很多,Beego,Gin,Iris,Revel等等。目前国内使用量比较多的是前两个,鉴于Beego的源码一直被人吐槽并且Beego使用起来太过于臃肿,框架本身构造的大而全,很多功能不一定会是你想要的这些原因,我们着重关注Gin框架的使用。Gin没有像Beego那样什么都做,它只专注于web请求的封装,如果你想做缓存,想连接数据库等等还需要使用别的框架或者使用原生的API。G...原创 2019-06-16 23:03:02 · 3830 阅读 · 0 评论 -
Go中sync包学习
前面刚讲到goroutine和channel,通过goroutine启动一个协程,通过channel的方式在多个goroutine中传递消息来保证并发安全。今天我们来学习sync包,这个包是Go提供的基础包,提供了锁的支持。但是Go官方给的建议是:不要以共享内存的方式来通信,而是要以通信的手段来共享内存。所以他们是提倡使用channel的方式来实现并发控制。学过Java的同学对锁的概念肯定不陌生...原创 2019-05-20 23:51:19 · 190 阅读 · 0 评论 -
Go中的interface学习
学过Java的同学都知道在Java中接口更像是一种规范,用接口定义了一组方法,下面实现这个接口的类只管按照写好的方法名和返回值去实现就好,内部如何实现是各个方法自己的事情,接口本身不关注。另外Java中实现接口的类必须显式的声明实现了哪个接口: implement InterfaceName,仔细思考一下会有如下问题:如果你修改了接口名,那么类也得跟着修改;你必须先定义接口,才能去实现它;...原创 2019-04-24 21:46:06 · 561 阅读 · 0 评论 -
Go中的字符串使用----strings和strconv
Go中的字符串操作字符串是工作中最常用的,值得我们专门的练习一下。在Go中使用strings包来操作字符串,这也是内置的包哈,不像Java中要么手写,要么引入common-lang 或者 别的第三方。另外涉及到字符串与其他类型之间的转换使用了strconv包来操作。strings包1. 字符串包含关系strings.Contains(s, substr string) bool判断s串...原创 2019-03-24 18:50:18 · 409 阅读 · 0 评论 -
Go中的指针
学Java以来,让程序员忽略了指针和内存地址这些概念,Java帮我们封装了对象,简化了对象引用之间的关系。在Go语言中,又帮我们回忆起这些概念。我们创建的每一个对象在内存中都有一个位置去存储,每个内存块都有一个地址表示当前位置,通常用十六进制表示,如0x24005676543。Go语言取地址的符号是&。放在一个变量前使用就会返回相应变量的内存地址。比如下面的代码:var a = 3...原创 2019-03-30 18:50:24 · 604 阅读 · 0 评论 -
Go中的函数和闭包
函数参数和返回值的写法如果有多个参数是同一个类型,可以简略写:func testReturnFunc(v1,v2 int)(int,int) { x1 := 2 * v1 x2 := 3 * v2 return x1,x2}Go还支持命名返回值的方式。命名返回值作为结果形参(result parameters)被初始化为相应类型的零值,当需要返回的时候,我们只需要一条简单的不...原创 2019-03-30 23:31:29 · 246 阅读 · 0 评论 -
Go连接MYSQL
Go原生提供了连接数据库操作的支持,在用 Golang进行开发的时候,如果需要在和数据库交互,则可以使用database/sql包。这是一个对关系型数据库的通用抽象,它提供了标准的、轻量的、面向行的接口。在Go中访问数据库需要用到sql.DB接口:它可以创建语句(statement)和事务(transaction),执行查询,获取结果。使用数据库时,除了database/sql包本身,还需要引...原创 2019-04-10 17:07:23 · 1693 阅读 · 0 评论 -
Go中的结构体
前面我们或多或少的都使用了结构体这种数据结构,本身结构体也有很多特性,我们一一来看。结构体的作用是将一个或者多个任一类型的变量组合在一起的数据类型,类似于我们在Java中class的作用。在结构体重也可以嵌套结构体。结构体还可以有自己的方法。1.定义结构体我们先定义一个结构体:结构体定义如下:type 标识符 struct { field1 type field2 type}...原创 2019-04-21 10:48:29 · 465 阅读 · 0 评论 -
Go标准库--net/http学习
Go中对网络的支持提供了标准库,net包提供了可移植的网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket。 http包提供了HTTP客户端和服务端的实现。 一般我们用http肯定多一些,下面来看一下http的使用方式。1. Post和Get请求的使用创建一个最简单的get请求:package mainimport ( "fmt" "io/ioutil" "n...原创 2019-04-15 16:13:17 · 204 阅读 · 0 评论 -
Go中的命名规范
1.命名规范1.1 Go是一门区分大小写的语言。命名规则涉及变量、常量、全局函数、结构、接口、方法等的命名。 Go语言从语法层面进行了以下限定:任何需要对外暴露的名字必须以大写字母开头,不需要对外暴露的则应该以小写字母开头。当命名(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Analysize,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要...原创 2019-04-22 23:39:12 · 404 阅读 · 0 评论 -
Go包管理工具dep
dep是一个golang依赖管理工具,需要在Go 1.7及更高的版本中使用。1. 安装安装dep工具的方式有很多种,如果是mac电脑的话,只需要如下命令:brew install dep对于Linux和类Unix系统而言,我们还可以使用如下方式安装dep:curl https://raw.githubusercontent.com/golang/dep/master/install.s...原创 2019-04-18 17:10:31 · 477 阅读 · 0 评论 -
Go中的文件读写
在 Go 语言中,文件使用指向 os.File 类型的指针来表示的,也叫做文件句柄 。我们来看一下os包的使用方式。1.读取文件os包提供了两种打开文件的方法:Open(name string) (*File, error)func OpenFile(name string, flag int, perm FileMode) (*File, error) 第一个方法是以只读的方式去打开...原创 2019-04-18 23:53:41 · 1676 阅读 · 0 评论 -
MySQL一键生成实体文件的神器-ginbro
Java转过来的同学对Mybatis的使用肯定不陌生,特别是对一堆表去生成相应的dao和entity的时候使用Mybatis generator所带来的感触,无比深刻。前面我们也讲过原生的数据库使用,讲过gorm的使用,无论是原生的还是第三方的数据库工具,都是需要我们手动的写struct和相应的CRUD的。今天说的这一款插件跟Java中的Mybatis generator一样,都是能帮我们简化表与...原创 2019-06-11 21:19:45 · 732 阅读 · 0 评论