随笔分类 - go标准库
摘要:通过类型信息创建实例 当已知 reflect.Type 时,可以动态地创建这个类型的实例,实例的类型为指针。例如 reflect.Type 的类型为 int 时,创建 int 的指针,即*int,代码如下: func main() { var a int // 获取a的反射类型对象 typeOfA
阅读全文
摘要:通过反射获取值信息 当我们将一个接口值传递给一个 reflect.ValueOf 函数调用时,此调用返回的是代表着此接口值的动态值的一个 reflect.Value 值。我们必须通过间接的途径获得一个代表一个接口值的 reflect.Value 值。 一个reflect.Value值的CanSet方
阅读全文
摘要:10.3通过反射获取类型信息 在 Go语言中通过调用 reflect.TypeOf 函数,我们可以从一个任何非接口类型的值创建一个 reflect.Type 值。reflect.Type 值表示着此非接口值的类型。通过此值,我们可以得到很多此非接口类型的信息。当然,我们也可以将一个接口值传递给一个
阅读全文
摘要:反射是众多编程语言中的一个非常实用的功能,它是一种能够自描述、自控制的应用,Go语言也对反射提供了友好的支持。 Go语言中使用反射可以在编译时不知道类型的情况下更新变量,在运行时查看值、调用方法以及直接对他们的布局进行操作。 由于反射是建立在类型系统(type system)上的,所以我们先来复习一
阅读全文
摘要:Go语言反射,reflection Go语言中的反射是由 reflect 包提供支持的,它定义了两个重要的类型 Type 和 Value 任意接口值在反射中都可以理解为由 reflect.Type 和 reflect.Value 两部分组成,并且 reflect 包提供了 reflect.TypeO
阅读全文
摘要:简介 context.Context 是golang中独特的涉及,可以用来用来设置截止日期、同步信号,传递请求相关值的结构体。 与 Goroutine 有比较密切的关系。 在web程序中,每个Request都需要开启一个goroutine做一些事情,这些goroutine又可能会开启其他的 goro
阅读全文
摘要:反射 反射是指程序在运行期对程序本身访问和修改的能力 变量的内在机制 变量包含类型信息和值信息 var arr [10]int arr[0] = 10 类型信息:是静态的元信息,是预先定义好的 值信息:是程序运行过程中动态改变的 反射的使用 reflect包封装了反射相关的方法 获取类型信息:ref
阅读全文
摘要:数据格式介绍 是系统中数据交互不可缺少的内容 这里主要介绍JSON、XML、MSGPack JSON json是完全独立于语言的文本格式,是k-v的形式 name:zs 应用场景:前后端交互,系统间数据交互 json使用go语言内置的encoding/json 标准库 编码json使用json.Ma
阅读全文
摘要:简介 golang 中的创建一个新的 goroutine , 并不会返回像c语言类似的pid,所有我们不能从外部杀死某个goroutine,所有我就得让它自己结束,之前我们用 channel + select 的方式,来解决这个问题,但是有些场景实现起来比较麻烦,例如由一个请求衍生出的各个 goro
阅读全文
摘要:在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的t
阅读全文
摘要:Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现。 http客户端 基本的HTTP/HTTPS请求 Get、Head、Post和PostForm函数发出HTTP/HTTPS请求。 resp, err := http.Get("http://5lmh.com/") ...
阅读全文
摘要:html/template包实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用text/template包。 模板 在基于MVC的Web架构中,我们通常需要在后端渲染一些数据到HTML文件中,从而实现
阅读全文
摘要:strconv 包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数: Atoi()、Itia()、parse系列、format系列、append系列。 string与int类型转换 这一组函数是我们平时编程中用的最多的。 Atoi() Atoi()函数用于将字符串类型的整
阅读全文
摘要:bufio bufio包实现了带缓冲区的读写,是对文件读写的封装 bufio缓冲写数据 模式 含义 os.O_WRONLY 只写 os.O_CREATE 创建文件 os.O_RDONLY 只读 os.O_RDWR 读写 os.O_TRUNC 清空 os.O_APPEND 追加 bufio读、写数据
阅读全文
摘要:参考链接 输入输出的底层原理 终端其实是一个文件,相关实例如下: os.Stdin:标准输入的文件实例,类型为*File os.Stdout:标准输出的文件实例,类型为*File os.Stderr:标准错误输出的文件实例,类型为*File 以文件的方式操作终端: func main() { var
阅读全文
摘要:Go语言内置的log包实现了简单的日志服务。本文介绍了标准库log的基本使用。 使用Logger log包定义了Logger类型,该类型提供了一些格式化输出的方法。本包也提供了一个预定义的“标准”logger,可以通过调用函数Print系列(Print|Printf|Println)、Fatal系列
阅读全文
摘要:Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。 os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。 func main() { // 获取命令行参数 // os.Args:[]string if l
阅读全文
摘要:时间类型 time.Time类型表示时间。我们可以通过time.Now()函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息。示例代码如下: func main() { current := time.Now() fmt.Println(current) // 2021-11-26 16:
阅读全文
摘要:fmp fmt.Fprintln、fmt.Fprintf fmt.Fprintln(os.Stdout, "向标准输出写入内容") // 0644: 拥有者6读写权限,组用户4读权限,其它用户4读权限 // os.O_CREATE创建权限,os.O_WRONLY只写权限,os.APPEND追加权限,
阅读全文