07 2020 档案
golang学习笔记---获取目录下的文件及目录信息
摘要:一、获取当前目录下的文件或目录信息(不包含多级子目录) package main import ( "fmt" "io/ioutil" "log" "os" ) func main() { pwd, _ := os.Getwd() //获取文件或目录相关信息 fileInfoList, err := 阅读全文
posted @ 2020-07-31 15:56 清明-心若淡定 阅读(5284) 评论(0) 推荐(0)
golang学习笔记 ---flag(2)
摘要:Demo0: package main import ( "fmt" "flag" ) func main() { t1 := flag.Int("w",0,"demo test") t2 := flag.String("a","Hello","demo test") flag.Parse() fm 阅读全文
posted @ 2020-07-31 09:54 清明-心若淡定 阅读(239) 评论(0) 推荐(0)
golang学习笔记---encoding/xml
摘要:xml vs json xml和json都是文本表示的数据格式:跨平台跨系统交换数据 但是,XML更适合标记文档,JSON更适合数据交互。 两者最大的不同在于,XML是一个完整的标记语言,而JSON不是。XML利用标记语言的特性提供了绝佳的延展性(如XPath),在数据存储,扩展及高级检索方面优势明 阅读全文
posted @ 2020-07-30 16:21 清明-心若淡定 阅读(638) 评论(0) 推荐(0)
golang学习笔记---reflect包
摘要:go语言提供了一种机制,在编译时不知道类型的情况下,可更新变量,在运行时查看值,调用方法以及直接对他们的布局进行操作。这种机制称为反射(reflection)。 为什么使用反射 有时候我们需要写一个函数有能力统一处理各种值类型的函数,而这些类型可能无法共享同一个接口,也可能布局未知,也有可能这个类型 阅读全文
posted @ 2020-07-30 10:14 清明-心若淡定 阅读(338) 评论(0) 推荐(0)
golang学习笔记---文件操作
摘要:go中打开文件常用os.open,需要注意的是os.open只接收一个文件名参数,默认只有只读权限,文件的读写 flag 是以常量的形式定义如下 const ( // Exactly one of O_RDONLY, O_WRONLY, or O_RDWR must be specified. O_ 阅读全文
posted @ 2020-07-30 08:27 清明-心若淡定 阅读(237) 评论(0) 推荐(0)
golang学习笔记 ---日志库 logrus
摘要:logrus特性 官方自己宣传的最大亮点是 结构化。 完全兼容golang标准库日志模块:logrus拥有六种日志级别:debug、info、warn、error、fatal和panic,这是golang标准库日志模块的API的超集.如果您的项目使用标准库日志模块,完全可以以最低的代价迁移到logr 阅读全文
posted @ 2020-07-29 16:45 清明-心若淡定 阅读(388) 评论(0) 推荐(0)
golang学习笔记---- 格式化IO
摘要:格式化打印的说明 func Print(v ...interface{}) func Printf(format string, v ...interface{}) func Println(v ...interface{}) 占位符通用说明 %v the value in a default fo 阅读全文
posted @ 2020-07-29 14:57 清明-心若淡定 阅读(277) 评论(0) 推荐(0)
golang学习笔记 --- struct 嵌套
摘要:定义结构体 type Btn struct{ Name string `json:"name"` Type string `json:"type"` Url string `json:"url"` Sub_button []Btn `json:"sub_button,omitempty"` //值为 阅读全文
posted @ 2020-07-28 13:05 清明-心若淡定 阅读(735) 评论(0) 推荐(0)
golang学习笔记---HTTPS
摘要:HTTPS证书 正式发布的时候,是需要购买正规的证书的。测试程序时,如果没有,我们可以使用openssl来生成私人的证书。 (1)首先我们先生成证书私钥 openssl genrsa -out server.key 2048 (2)根据私钥生成公钥 openssl rsa -in server.ke 阅读全文
posted @ 2020-07-24 16:05 清明-心若淡定 阅读(665) 评论(0) 推荐(0)
golang学习笔记---Channels特性
摘要:Channels的可靠发送 可靠保证的通信发送接受基于这么个场景“我是否需要保证已收到特定goroutine发送的信号?”,来看看下面的例子: go func() { p := <-ch // Receive }() ch <- "paper" // Send 发送goroutine是否需要保证第二 阅读全文
posted @ 2020-07-23 13:54 清明-心若淡定 阅读(388) 评论(0) 推荐(0)
golang学习笔记 ---http标准库
摘要:1.使用http客户端发送请求 2.使用http.Client控制请求头部等 3.使用httpputil简化工作 package main import ( "fmt" "net/http" "net/http/httputil" ) func main() { resp, err := http. 阅读全文
posted @ 2020-07-23 09:35 清明-心若淡定 阅读(338) 评论(0) 推荐(0)
golang学习笔记---在接口和类型之间转换
摘要:1. 类型断言的格式接口断言类似于控制流中的if,但大量类型断言出现时,应使用更高效的类型分支switch特性。 t := i.(T) i表示接口变量(断言对象),T表示要转换的目标类型(指定类型),t表示转换后的变量(指定类型接口)。此时,如果i没有实现T,这个语句会触发panic。因此,有以下改 阅读全文
posted @ 2020-07-23 08:11 清明-心若淡定 阅读(1798) 评论(0) 推荐(0)
golang学习笔记 --- HTTP 客户端
摘要:Get 函数语法: Get(url string) (resp *Response, err error) 参数:字符串类型的 url 地址,需要注意的是这里要是完整地址,要加上 http:// 或 https:// 的地址 返回值: *Response 如果获取到了数据,会将数据保存在 Respo 阅读全文
posted @ 2020-07-22 15:05 清明-心若淡定 阅读(269) 评论(0) 推荐(0)
golang学习笔记 ----interface(接口3)
摘要:Go的接口 Go的接口定义了一组方法(方法集),但不包含这些方法的具体实现。接口提供了一种方式来说明某类对象具有的行为,它的主要特点如下: 接口实际上就是一组方法声明的集合,没有具体实现,没有字段属性 某个类型只要实现了某个接口的所有方法,就实现了该接口,不需要显示声明实现了什么接口 接口可以嵌入其 阅读全文
posted @ 2020-07-22 10:35 清明-心若淡定 阅读(225) 评论(0) 推荐(0)
golang学习笔记---上下文 context
摘要:golang 的 Context 包,是专门用来简化多个goroutine之间的上下文同步。 库的介绍Go 语言中的每一个请求的都是通过一个单独的 Goroutine 进行处理的,HTTP/RPC 请求的处理器往往都会启动新的 Goroutine 访问数据库和 RPC 服务,我们可能会创建多个 Go 阅读全文
posted @ 2020-07-22 08:30 清明-心若淡定 阅读(553) 评论(0) 推荐(0)
golang学习笔记 ----interface(接口)
摘要:一句话说明 接口提供了一种方式来说明对象的行为:如果谁能搞定这件事,它就可以用在这儿。 接口定义了一组方法(方法集),但是这些方法不包含(实现)代码:它们没有被实现(它们是抽象的)。 所以一句话来说,接口是使用方法的抽象 定义: type Integer int func (a Integer) L 阅读全文
posted @ 2020-07-21 16:07 清明-心若淡定 阅读(512) 评论(0) 推荐(0)
golang学习笔记---channel&goroutine
摘要:什么是channel 从字面上看,channel的意思大概就是管道的意思。channel是一种go协程用以接收或发送消息的安全的消息队列,channel就像两个go协程之间的导管,来实现各种资源的同步。可以用下图示意: channel的用法很简单: func main() { ch := make( 阅读全文
posted @ 2020-07-21 14:42 清明-心若淡定 阅读(290) 评论(0) 推荐(0)
golang学习笔记---select(3)
摘要:select 介绍 从不同并发执行的协程中,获取数据可以用select来完成。select监听的多个通道,也可以用通道发送数值。 select { // 接收数据 case u:= <- ch1: ... // 发送数据 case v:= <- ch2: ... ... default: // no 阅读全文
posted @ 2020-07-21 12:23 清明-心若淡定 阅读(227) 评论(0) 推荐(0)
golang 学习笔记 ---select关键字用法
摘要:A "select" statement chooses which of a set of possible send or receive operations will proceed. It looks similar to a "switch" statement but with the 阅读全文
posted @ 2020-07-21 10:53 清明-心若淡定 阅读(328) 评论(0) 推荐(0)
golang学习笔记---channel(2)
摘要:channel容量为0和为1的区别 容量为1的channel是有缓冲channel的特殊情况,可以用在2个goroutine之间同步状态,或者其中一个等待另一个完成时才继续执行任务的情况。 无缓存的channel的容量始终为0,发送者发送数据和接受者接受数据时同时的,无任何中间态,不能缓冲任何数据。 阅读全文
posted @ 2020-07-21 09:46 清明-心若淡定 阅读(483) 评论(0) 推荐(0)
golang学习笔记---等待 goroutine 完成任务
摘要:Goroutine 是 Golang 中非常有用的功能,但是在使用中我们经常碰到下面的场景:如果希望等待当前的 goroutine 执行完成,然后再接着往下执行,该怎么办?本文尝试介绍这类问题的解决方法。 没有等待的情况 让我们运行下面的代码,并关注输出的结果: package main impor 阅读全文
posted @ 2020-07-20 16:41 清明-心若淡定 阅读(734) 评论(0) 推荐(0)
golang学习笔记---channel(通道)
摘要:Channel 是 Golang 在语言级别提供的 goroutine 之间的通信方式,可以使用 channel 在两个或多个 goroutine 之间传递消息。Channel 是进程内的通信方式,因此通过 channel 传递对象的过程和调用函数时的参数传递行为比较一致,比如也可以传递指针等。使用 阅读全文
posted @ 2020-07-20 10:34 清明-心若淡定 阅读(543) 评论(0) 推荐(0)
golang学习笔记---pflag包
摘要:有一个第三方的命令行参数解析包 pflag 比 flag 包使用的更为广泛。pflag 包的设计目的就是替代标准库中的 flag 包,因此它具有更强大的功能并且与标准的兼容性更好。 pflag 包的主要特点 pflag 包与 flag 包的工作原理甚至是代码实现都是类似的,下面是 pflag 相对 阅读全文
posted @ 2020-07-17 13:28 清明-心若淡定 阅读(1267) 评论(0) 推荐(0)
golang学习笔记---flag包
摘要:flag 包简介 在 Golang 程序中有很多种方法来处理命令行参数。简单的情况下可以不使用任何库,直接处理 os.Args;其实 Golang 的标准库提供了 flag 包来处理命令行参数;还有第三方提供的处理命令行参数的库,比如 Pflag 等。 入门 demo 在 Go workspace 阅读全文
posted @ 2020-07-17 11:05 清明-心若淡定 阅读(341) 评论(0) 推荐(0)
golang学习笔记 --- 结构体(struct)
摘要:结构体(struct) Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型。试图表示一个现实世界中的实体。 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和一个类型。结构体的目的就是把数据聚集在一起,以便能够更加便捷地操作这些数据。 阅读全文
posted @ 2020-07-17 10:51 清明-心若淡定 阅读(485) 评论(0) 推荐(0)
golang学习笔记---映射(map)
摘要:映射(map) 映射是一种数据结构,用于存储一系列无序的键值对,它基于键来存储值。映射的特点是能够基于键快速检索数据。键就像是数组的索引一样,指向与键关联的值。与 C++、Java 等编程语言不同,在 Golang 中使用映射不需要引入任何库。因此 Golang 的映射使用起来更加方便。我们可以通过 阅读全文
posted @ 2020-07-17 10:21 清明-心若淡定 阅读(442) 评论(0) 推荐(0)
golang学习笔记----slice(22)
摘要:切片(slice) 切片(slice)是 Golang 中一种比较特殊的数据结构,这种数据结构更便于使用和管理数据集合。切片是围绕动态数组的概念构建的,可以按需自动增长和缩小。切片的动态增长是通过内置函数 append() 来实现的,这个函数可以快速且高效地增长切片,也可以通过对切片再次切割,缩小一 阅读全文
posted @ 2020-07-17 09:28 清明-心若淡定 阅读(243) 评论(0) 推荐(0)
golang学习笔记---数组(22)
摘要:数组 数组是指一系列同一类型数据的集合。数组中包含的每个数据被称为数组元素(element),这种类型可以是任意的原始类型,比如 int、string 等,也可以是用户自定义的类型。一个数组包含的元素个数被称为数组的长度。在 Golang 中数组是一个长度固定的数据类型,数组的长度是类型的一部分,也 阅读全文
posted @ 2020-07-17 08:29 清明-心若淡定 阅读(237) 评论(0) 推荐(0)
golang学习笔记 ---数据类型转换(strconv包)
摘要:Go不会对数据进行隐式的类型转换,只能手动去执行转换操作。 简单的转换操作 转换数据类型的方式很简单。 valueOfTypeB = typeB(valueOfTypeA) 例如: // 浮点数 a := 5.0 // 转换为int类型 b := int(a) Go允许在底层结构相同的两个类型之间互 阅读全文
posted @ 2020-07-10 15:54 清明-心若淡定 阅读(639) 评论(0) 推荐(0)
golang学习笔记 ---slice(2)
摘要:array是固定长度的数组, slice是对array的扩展,本质上是基于数组实现的,主要特点是定义完一个slice变量之后,不需要为它的容量而担心。 array与slice的差别: (1)array是固定长度,slice是可变长度 (2)array是值类型,slice是引用类型 slice 结构 阅读全文
posted @ 2020-07-10 13:00 清明-心若淡定 阅读(743) 评论(0) 推荐(0)
golang学习笔记 ---slice
摘要:slice表示切片(分片),例如对一个数组进行切片,取出数组中的一部分值。在现代编程语言中,slice(切片)几乎成为一种必备特性,它可以从一个数组(列表)中取出任意长度的子数组(列表),为操作数据结构带来非常大的便利性,如python、perl等都支持对数组的slice操作,甚至perl还支持对h 阅读全文
posted @ 2020-07-10 12:46 清明-心若淡定 阅读(531) 评论(0) 推荐(0)
golang学习笔记--中英文字符串截取
摘要:用golang截取字符串时需要用到string 包, 通过将字符串转为[]byte类型进行切片并用string转为截取完的字符串结果 // 截取字符串前三位 str := "fidding" str = string([]byte(str)[:3]) // 结果为 "fid" fmt.Println 阅读全文
posted @ 2020-07-10 09:58 清明-心若淡定 阅读(2017) 评论(0) 推荐(0)
golang学习笔记 ---如何将interface转为int, string, slice, struct等类型
摘要:在golang中,interface{}允许接纳任意值,int, string, struct,slice等,因此我可以很简单的将值传递到interface{} package main import ( "fmt" ) type User struct{ Name string } func ma 阅读全文
posted @ 2020-07-10 09:39 清明-心若淡定 阅读(28663) 评论(1) 推荐(0)
golang学习笔记---空接口
摘要:空接口是指没有定义任何接口方法的接口。没有定义任何接口方法,意味着Go中的任意对象都可以实现空接口(因为没方法需要实现),任意对象都可以保存到空接口实例变量中。 空接口的定义方式: type empty_int interface { } 通常会简写为type empty_int interface 阅读全文
posted @ 2020-07-09 15:00 清明-心若淡定 阅读(1320) 评论(0) 推荐(0)
Go学习笔记---struct的导出
摘要:struct的属性是否被导出,也遵循大小写的原则:首字母大写的被导出,首字母小写的不被导出。 所以: 如果struct名称首字母是小写的,这个struct不会被导出。连同它里面的字段也不会导出,即使有首字母大写的字段名。 如果struct名称首字母大写,则struct会被导出,但只会导出它内部首字母 阅读全文
posted @ 2020-07-09 13:52 清明-心若淡定 阅读(523) 评论(0) 推荐(0)
golang学习笔记---map
摘要:Go里的map用于存放key/value对,在其它地方常称为hash、dictionary、关联数组,这几种称呼都是对同一种数据结构的不同称呼,它们都用于将key经过hash函数处理,然后映射到value,实现一一对应的关系。 map的内部结构 一个简单的map结构示意图: 在向map中存储元素的时 阅读全文
posted @ 2020-07-09 13:28 清明-心若淡定 阅读(391) 评论(0) 推荐(0)
golang学习笔记---struct(3)
摘要:转自https://www.cnblogs.com/f-ck-need-u/p/9882315.html struct struct定义结构,结构由字段(field)组成,每个field都有所属数据类型,在一个struct中,每个字段名都必须唯一。 说白了就是拿来存储数据的,只不过可自定义化的程度很 阅读全文
posted @ 2020-07-09 10:42 清明-心若淡定 阅读(377) 评论(0) 推荐(0)
golang学习笔记----struct 方法
摘要:结构方法: 方法根据传入的参数的不同,又分为:值传递 和 指针传递。两者的效果就是:值传递不可改变值,指针传递可以改变值。 值传递的适用于取值 指针传递适用于更改字段的值 type Response struct { Code int Result []byte Headers map[string 阅读全文
posted @ 2020-07-06 09:58 清明-心若淡定 阅读(466) 评论(0) 推荐(0)
golang学习笔记 ---struct(2)
摘要:struct类型 struct Go语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器。例如,我们可以创建一个自定义类型person代表一个人的实体。这个实体拥有属性:姓名和年龄。这样的类型我们称之struct。如下代码所示: type person struct 阅读全文
posted @ 2020-07-03 14:22 清明-心若淡定 阅读(268) 评论(0) 推荐(0)
golang学习笔记---接口3
摘要:什么是interface 简单的说,interface是一组method签名的组合,我们通过interface来定义对象的一组行为。 interface类型 interface类型定义了一组方法,如果某个对象实现了某个接口的所有方法,则此对象就实现了此接口。详细的语法参考下面这个例子 type Hu 阅读全文
posted @ 2020-07-02 15:19 清明-心若淡定 阅读(342) 评论(0) 推荐(0)
golang学习笔记 --并发
摘要:goroutine goroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据 阅读全文
posted @ 2020-07-01 15:41 清明-心若淡定 阅读(265) 评论(0) 推荐(0)