hzwy23
这个作者很懒,什么都没留下…
展开
-
Golang模块管理功能
假如一个人同时参与8个项目的开发,采用上述的代码结构来管理8个项目,8个项目的代码,以及这8个项目的依赖包都在这个src目录下,开发人员可能无法很直接的识别出来各个项目的依赖包。采用这种方式的进行依赖包管理,意味着如果我们的项目引用了大量依赖包,将会导致我们的项目代码包大小会非常大,如果首次上传 Git 代码仓库,需要花费更多的时间。使用 Go vendor 进行包管理,在包中添加vendor目录,将这个项目需要的依赖包放到项目所在目录下的vendor目录中,实现不同项目对各自依赖包的手动包管理。原创 2023-11-22 15:31:18 · 835 阅读 · 0 评论 -
Go关键字--defer
deferdefer关键字,用于在函数调用结束之后,再去执行defer后边的函数。defer语法defer 函数下边来看一段例子:package mainimport "fmt"func demo() int { defer fmt.Println("函数调用结束之后,调用defer后边的函数") fmt.Println("begin") return 200}fu..原创 2020-07-08 15:03:16 · 481 阅读 · 1 评论 -
Go关键字--switch
switchswitch用来实现条件选择器,与select有着类似的功能,只是switch中的case判断的是一个通信事件是否完成,而switch中的case判断的是值是否相等。switch与select还有一个不同之处在于switch中的case可以使用逗号来分割多种匹配情况,而select中的case只能是一个通信事件。switch选择器的语法格式是:switch 变量 { ca...原创 2020-07-08 15:02:46 · 360 阅读 · 0 评论 -
Go关键字--range
range用于遍历数组,切片,chan,字符串,字典类型变量。通常和for关键字一起使用。数组,切片,字符串类型变量遍历过程方法是:// 需要遍历访问的变量名是arrayfor index,value := range array{ // index 表示计数器,表示读取到数组中的第几个元素 // value 表示数组中的值 fmt.Println(ind...原创 2020-07-08 15:02:33 · 576 阅读 · 0 评论 -
Go关键字--if else
if elseif else用于条件判断,else关键字用于处理if条件以外的情况,是对if的一种补充,if else基本语法是:if condition { // do sonething}if condition { //do something} else { // do something}多种情况条件判断,if语句实现方式是:if condit...原创 2020-07-08 15:02:21 · 1399 阅读 · 0 评论 -
Go关键字--select
select在golang中使用select可以实现一个条件选择器,select与switch关键字有着类似的效果,都是实现了一个条件选择器,但是select中的判断条件必须是通信操作,golang中的通信操作是 <- 。当通道在操作符左侧时,表示向通道中写入信息,当通道在操作符右侧时,表示读取通道信息。// 写入操作通道 <- 值// 读取操作变量 <- 通道编...原创 2020-07-08 15:01:53 · 364 阅读 · 0 评论 -
Go关键字--import
importimport用于导入被引用的包。如在项目中,有一个打印日志信息的包,路径是GOPATH/src/hzwy23/GoDemos/demo5/logs。 包名是logs。在main函数中想使用logs包来记录信息。只需要在发生引用的地方,导入logs这个包即可使用logs包中的可导出的变量,结构体,函数等。在引用包时,import指向的是包所在的目录相对于GOPATH/src的路径...原创 2020-07-08 15:01:46 · 1200 阅读 · 1 评论 -
Go关键字--struct
structgolang语言中,struct有着至关重要的作用,struct用来定义一个抽象的数据结构。在程序设计中,首先对各种事物进行特征分析,提炼出各个事物最主要的特征信息,然后按照这些特征信息进行归类。每一个分类,有着自己的特征信息,且对于这个类而言,这些特征信息又不可或缺,正是有了这些零散的特征信息,才能更为形象的描述这个类。在程序设计中,基于类的设计,能够更好的保证数据完整性,也能更...原创 2020-07-08 15:01:38 · 862 阅读 · 1 评论 -
Go基本数据类型
golang总共有18个基本数据类型,分别是:bool string rune byte int uintint8 uint8 int16 uint16 int32 uint32 int64 uint64 float32 float64 complex64 complex128...原创 2020-07-08 15:01:23 · 804 阅读 · 0 评论 -
Go关键字--package
packagepackage用来定义包。golang源文件为什么需要声明包名?golang语言通过目录来管理golang源文件(.go结尾文件),单个目录下边所有的golang源文件中定义的函数,变量,结构体等等形成了一个集合,包名就是这个集合的名字。在目录A中引用目录B中的变量,函数,结构体等时,首先需要在发生引用的golang源文件中导入B目录的路径,然后通过B目录中golang源文件...原创 2020-07-08 15:00:34 · 1138 阅读 · 0 评论 -
Go关键字--interface
interface接口就是定义了0个或多个方法的集合,它是两个事物对接的一个规范。实现了这个接口,就符合了这个规范。接口中只能声明方法,不能定义字段,也不能实现方法。这一点与java的interface还不太一样,在java的interface中,可以定义常量字段,而golang的interface中只能有方法。下边来看看定义一个接口的语法:type Message interface...原创 2020-07-08 15:00:13 · 829 阅读 · 0 评论 -
Go关键字--map
mapmap关键字用来定义字典,其语法格式是:map[key]value从形式上看,有点怪异,中括号里边是字段的key值,value是key对应的值,通过key来查询value值,key与value之间形成关联关系。在字典中key值不能重复,value可以重复。定义一个字典类型变量语法格式如下:var 变量名 map[dataType]dataTypevar 变量名 ...原创 2020-07-08 15:00:00 · 904 阅读 · 0 评论 -
Go关键字--go
go轻松开启高并发,一直都是golang语言引以为豪的功能点。golang通过goroutine实现高并发,而开启goroutine的钥匙正是go关键字。开启并发执行的语法格式是:go funcName()在调用函数后,只需要在被调用的函数前边加上go关键字,就可以轻松的开启并发执行。下边请看示例代码:package mainimport ( "fmt" ...原创 2020-07-08 14:58:33 · 8474 阅读 · 0 评论 -
Go关键字--return
returnreturn用于在函数内部,退出函数执行过程,应用场景 1. 退出函数执行过程,不指定返回值 2. 退出函数执行过程,并指定返回值退出执行,不指定返回值通常有两种情况不需要指定返回值退出函数执行过程。第一是:函数没有返回值;第二是:函数返回值有变量名,不需要显示的指定返回值。下边通过一个示例来说明这两种情况:package mainimport ( ...原创 2020-07-08 14:57:37 · 9854 阅读 · 1 评论 -
Go关键字--var
varvar关键字用来定义变量,不论定义什么类型的变量,都可以使用var来定义。var 变量名 [类型] [=] [初始值] 定义变量时,如果定义的变量没有初始化,则必须指定变量类型;如果变量定义时初始化,则可以不指定类型,由编译器自行推断变量类型。 如定义一个变量名为num的int类型变量方法如下:var num intvar num int = 8var num ...原创 2020-07-08 14:57:23 · 6127 阅读 · 2 评论 -
Golang 内置函数
Golang中内置了一些函数,在使用这些函数时,不必以包名为前缀来调用,而是直接写函数名即可调用,这些函数都是一些基础的函数,在程序设计中应用比较普遍,所以一定要牢记这些最基本的函数用法。下边来介绍一下Golang内置函数。appendappend作用是在切片变量后边追加新的数据,然后返回新的切片变量。函数声明是:func append(slice []Type, elems ...原创 2020-07-08 14:57:10 · 3449 阅读 · 1 评论 -
Go关键字--goto
gotogoto关键字,用来改变函数内代码的执行顺序,跳转到函数内指定的标签地方运行,goto不能跨函数代码块跳转。下边请看一段示例,使用goto实现for循环功能:package mainimport ( "fmt")func main() { fmt.Println("begin") var i = 0 // 定义一个标签,这个标签只能被goto使用RET: if ...原创 2020-07-08 14:55:37 · 3399 阅读 · 2 评论 -
Go关键字--chan
chanchan又称之为通道,形式类似于管道,内容从一头被送进去,从另一头被读取出来。下边来介绍定义通道的方法:var 变量名 chan dataType定义通道时,需要指定数据类型,就是只允许这个指定数据类型的变量通过这个通道。初始化通道golang中在初始化通道类型变量时,可以将通道分为两种情况,一种是带缓冲的通道,另一种是不带缓冲的通道。 下边来介绍下两种情况的初始...原创 2020-07-08 14:55:27 · 3780 阅读 · 0 评论 -
Go关键字--const
constconst用来定义常量,所谓常量,就是在定义之后,其值不允许被修改。定义常量的格式是:const 常量名 [类型] = 值在定义常量时,可以不指定类型,golang编译器会自动推导出常量类型。定义字符串类型常量的写法:const hi = "this is my first const"orconst hi string = "this is my first...原创 2020-07-08 14:55:12 · 14367 阅读 · 0 评论 -
Go关键字--func
funcfunc关键字用来定义函数,函数是golang中非常重要的一块。定义一个函数的语法格式是:func fnctionName(arg1 dataType,arg2 dataType)(dataType,dataType){ fmt.Println("func body") return "a","b"}函数多返回值是golang的特性之一,在声明返回值时,可..原创 2020-07-08 14:54:53 · 3965 阅读 · 0 评论 -
Go关键字--type
typetype有如下几种用法: 1. 定义结构体 2. 定义接口 3. 类型定义 4. 类型别名 5. 类型查询定义结构体结构体是用户自定义的一种抽象的数据结构,golang中struct类似于java语言中的class, 在程序设计中,有着举足轻重的地位。结构体的用法,将会在struct关键字中详细的介绍。下边来看一下定义一个结构体的语法格式:type nam...原创 2020-07-08 14:54:42 · 14781 阅读 · 2 评论 -
Go关键字--fallthrough
fallthroughfallthrough关键字只能用在switch中。且只能在每个case分支中最后一行出现,作用是如果这个case分支被执行,将会继续执行下一个case分支,而不会去判断下一个分支的case条件是否成立。下边来一段示例:package mainimport "fmt"func main() { switch "a" { case "a": fmt.Prin..原创 2020-07-08 14:54:22 · 3998 阅读 · 0 评论 -
Golang--init函数介绍
init函数每个golang源文件中都可以定义一个init函数。golang系统中,所有的源文件都有自己所属的目录,每一个目录都有对应的包名。在包的引用中,一旦某一个包被使用,则这个包下边的init函数将会被执行,且只执行一次。只执行一次的含义是什么呢? 如果一个包被多个地方引用,那么只有在这个包第一次被引用时,才会执行这个包里边的init函数,其他地方对包的再次引用,这个包里边的in...原创 2018-03-31 08:16:50 · 4628 阅读 · 0 评论 -
swagger使用笔记
在很多框架中,都会看到这个词汇, 这个组件,到底是干什么的呢?我所了解的swagger常见功能: 1. API文档生成工具,用户对系统中的API进行说明,以及提供测试接口. 2. 代码自动生成功能(就是根据特定的格式,生成RESTful风格的代码,是不是很神奇,是不是感觉写API代码块下岗了?)在github上查找go语言版本的swagger,发现了下班这个包 go-swagger, 下载下来原创 2017-04-14 22:53:43 · 10399 阅读 · 2 评论 -
golang vendor介绍
vendor 简介vendor是golang的一个包管理器.开启包管理器,需要一个环境变量的支持,且golang sdk 版本必须大于1.5 export GO15VENDOREXPERIMENT=1这个变量值为1,表示编译时,开启包管理器.执行go build的时候,会在vendor目录下边寻找你引用的外部包.可以将需要的外部包放到vendor目录中.这样每次编译的时候,当外部包修改,测试原创 2016-11-17 15:02:28 · 10225 阅读 · 0 评论 -
golang 实现 json web token
json web token 简介json web token 简称 jwt.他是一种轻量级的规范.这种规范允许客户端和服务端之间传递一些非敏感信息.常用于用户认证和授权系统.jwt组成部分 Header Claims Signature Header 组成部分typ: "JWT",alg: "HS256",1. typ是默认的一种标识.标识这条信息采用JWT规范.原创 2016-11-18 23:35:49 · 9843 阅读 · 0 评论 -
golang context(SDK1.7 新增部分)
golang 1.7之后引入了context.首先看看context,下边是golang sdk源代码中context内容,可以发现他是一个接口,通过定义一种规范,来规定context操作方法.// 上下文是一个接口.// 这个接口中声明了4个方法.type Context interface { // Deadline returns the time when work done o原创 2016-11-20 13:02:50 · 3825 阅读 · 0 评论 -
golang https服务简单介绍
首先从启动http监听服务开始.完成Server实例创建.配置http协议启动tcp监听下边通过一个流程来介绍http启动与接收请求服务的过程. 1. 通过下边的函数,开启http服务,下边函数主要初始化了Server实例,然后通过ListenAndServeTLS开启https服务.func ListenAndServeTLS(addr, certFile, keyFile string原创 2016-11-20 22:29:51 · 6319 阅读 · 0 评论 -
golang驱动kafka
kafka简介kafka是一种高吞吐量的分布式发布订阅消息系统,特点通过O(1)的磁盘数据结构提供消息的持久,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能.高吞吐量,即使是非常普通的硬件,kafka也可以支持每秒数百万的消息.支持通过kafka服务器和消费机集群来分区消息支持hadoop并行数据加载.kafka组成部分Brokerkafka集群包含一个或多个服务器,这种原创 2016-11-21 21:27:27 · 7081 阅读 · 3 评论 -
beego中引入jwt权限认证,有效的实行SSO(单点登录)
beego简介beego是一款使用golang开发的流行框架.github.com上地址 go get github.com/astaxie/beegojwt简介请参考地址:http://blog.youkuaiyun.com/hzwy23/article/details/53224724基于jwt写的两个函数package hjwtimport ( "fmt" "time" jwt原创 2016-11-24 01:15:54 · 36925 阅读 · 0 评论 -
golang版本快速排序实现
quicksort简介使用快速排序算法,对slice进行排序。目前支持int,int8,int16,int32,int64,float32,float64,string,uint,uint8,uint16,uint32,uint64类型的slice连接地址:github上quicksort源码地址 go get github.com/hzwy23/quicksort使用例子package ma原创 2016-12-06 21:25:46 · 3024 阅读 · 2 评论 -
golang解析json格式数据
json简介JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。常见样式1 {“id”:1,”name”:”bill”}这个json格式数据中,包含了2个字段,一个是id字段,值是1;第二个字段是name字段,其值是bill。这是一种基础的json格式数据。常见样式2 [{“id”:1234,”name”:”jack”},{“id”:4567,”n原创 2016-12-14 22:55:42 · 21629 阅读 · 0 评论 -
网易云信golang接口
网易云信介绍详细信息请见http://netease.im,进入这个网易云信官网后,注册账号(有网易邮箱的直接登录)。原创 2020-07-08 14:58:15 · 1682 阅读 · 0 评论 -
关于golang中IO相关的Buffer类浅析
io重要的接口在介绍buffer之前,先来认识两个重要的接口,如下边所示:type Reader interface { Read(p []byte) (n int, err error)}type Writer interface { Write(p []byte) (n int, err error)}上边两个接口在golang sdk安装目录src/io/io.go中定义。原创 2017-02-22 00:02:24 · 23071 阅读 · 1 评论 -
golang中匿名组合
包含与匿名组合1.匿名组合1.1 匿名组合定义 golang中组合语法,就是在一个类中,引入了另一个类,如 type Logger struct{ } type Work struct{ log Logger } type Work2 struct{ log *Logger } func (Logger)Info(原创 2017-02-25 11:59:48 · 9859 阅读 · 0 评论 -
golang接口赋值操练
golang接口接口,姑且就称之为定义了一系列(也可能是空的)方法,但是又没有实现这些方法的一种结构体。 有时候,在纠结,接口类型的变量,到底是什么类型了?带着这个问题,来实操一下。 首先定义一个接口:type YourType interface { SayHi(str string)}type HeType interface { SayHi(str string)原创 2017-02-25 12:42:33 · 8615 阅读 · 0 评论 -
golang中接口查询
什么是接口查询接口查询,就是在一个接口变量中,去判断,那个把值赋给接口变量的对象,究竟有没有实现另一个接口,这个所谓的另一个接口,就是我要查询的那个接口。在这个已知的接口变量中,查询另一个接口的过程,就是接口查询了。接口查询作用通过接口查询,我们可以操作这个还原赋值给这个接口变量的对象的更加全面的功能。如赋值给这个接口变量的对象,实现了很多个接口,当他把值赋给这个接口后,那么这个接口变量就只能操作这原创 2017-02-25 13:15:43 · 8754 阅读 · 0 评论 -
golang中类型查询
golang 类型查询 .(type)原创 2017-02-25 13:36:39 · 8028 阅读 · 0 评论 -
golang中反射知识点浅析
1.reflect简介反射,就是在程序运行过程中,能够获取任意一个类的属性,方法;对任意一个类,能够调用他的任意方法和属性。这是一个比较官方的解说。个人觉得通俗易懂的解释是:“通过一个给定的变量对象,获取这个变量的类型,这个类型的属性,方法”2.重要接口与类golang中reflect包package reflect重要接口type Type interface{}重要类type Value str原创 2017-03-07 22:27:15 · 1607 阅读 · 0 评论 -
golang中unsafe包浅析
unsafe内容介绍func Alignof(x ArbitraryType) uintptrfunc Offsetof(x ArbitraryType) uintptrfunc Sizeof(x ArbitraryType) uintptrtype ArbitraryType inttype Pointer *ArbitraryType这个包中,只提供了3个函数,两个类型。就这么少的量,却原创 2017-03-09 00:13:27 · 2428 阅读 · 0 评论