随笔分类 - Golang
摘要:1、recover 概述 在 Go 语言中,recover() 函数用于从 panic 中恢复程序的控制流。recover() 通常用于防止程序在遇到 panic 时立即终止,而是允许程序执行一些清理操作或继续执行。具体来说,recover() 有以下作用: 捕获 panic: 当 recover(
阅读全文
摘要:时间类型 time.Time类型表示时间。 1、时间类型 func timeDemo() { now := time.Now() fmt.Println(now) fmt.Println(now.Format("2006-01-02 15:04:05")) year := now.Year() mo
阅读全文
摘要:热身 在讲这个问题之前,先来看一道代码题: package main import ( "fmt" "time" ) func main() { timeString := time.Now().Format("2006-01-02 15:04:05") fmt.Println(timeString
阅读全文
摘要:介绍 经常会看到以下了代码: package main import ( "fmt" "time" ) func main(){ for i := 0; i < 100 ; i++{ go fmt.Println(i) } time.Sleep(time.Second) } 主线程为了等待gorou
阅读全文
摘要:Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码:示例1: package main import "fmt" func main() { num := 3
阅读全文
摘要:Go里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。这两个函数在定义时不能有任何的参数和返回值。虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说,我们都强烈建议用户在一个pack
阅读全文
摘要:当我们定义了一个对象时,一般会创建一个方法方便外部初始化一个实例。如下面的例子: type Client struct { timeout int64 dialFunc func() error healthCheck func() bool } func NewClient(timeout int
阅读全文
摘要:函数定义:func Exit(code int) Exit 函数可以让当前程序以给出的状态码 code 退出。一般来说,状态码 0 表示成功,非 0 表示出错。程序会立刻终止,并且 defer 的函数不会被执行。
阅读全文
摘要:Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型。结构体是复合类型,当需要定义类型,它由一系列属性组成,每个属性都有自己的类型和值的时候,就应该使用结构体,它把数据聚集在一起。 结构体也是值类型,因此可以通过 new 函数来创建 组成结构体类型的那些数据成为字段(fiel
阅读全文
摘要:os/signal包实现对信号的处理 golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。 notify方法: func Notify(c chan<- os.Signal, sig ...os.Signal
阅读全文
摘要:什么是 map? Map 是 Go 中的内置类型,它将键与值绑定到一起。可以通过键获取相应的值。 如何创建 map? 可以通过将键和值的类型传递给内置函数 make 来创建一个 map。语法为:make(map[KeyType]ValueType)。(译者注:map 的类型表示为 map[KeyTy
阅读全文
摘要:数组 数组是类型相同的元素的集合。例如,整数 5, 8, 9, 79, 76 的集合就构成了一个数组。Go不允许在数组中混合使用不同类型的元素(比如整数和字符串)。 声明 var variable_name [SIZE] variable_type 有很多声明数组的方式,让我们一个一个地介绍。 pa
阅读全文
摘要:简介 json格式可以算我们日常最常用的序列化格式之一了,Go语言作为一个由Google开发,号称互联网的C语言的语言,自然也对JSON格式支持很好。但是Go语言是个强类型语言,对格式要求极其严格而JSON格式虽然也有类型,但是并不稳定,Go语言在解析来源为非强类型语言时比如PHP等序列化的JSON
阅读全文
摘要:1、new函数介绍 在 Go 语言中,new 函数用于动态地分配内存,返回一个指向新分配的零值的指针。它的语法如下: func new(Type) *Type 其中,Type 表示要分配的内存的类型,new 函数返回一个指向 Type 类型的新分配的零值的指针。但是需要注意的是,new 函数只分配内
阅读全文
摘要:我们在开发中会经常的把一个变量复制给另一个变量,那么这个过程,可能是深浅拷贝,那么今天帮大家区分一下这两个拷贝的区别和具体的区别。 一、概念1、深拷贝(Deep Copy): 拷贝的是数据本身,创造一个样的新对象,新创建的对象与原对象不共享内存,新创建的对象在内存中开辟一个新的内存地址,新对象值修改
阅读全文
摘要:【摘要】 viper是一个简单好用的读取配置文件的第三方开源库,它支持多种类型配置的读写,包括json、yaml、环境变量、命令行等,使用该库可以免去一些繁琐的配置读取代码实现。 一 基本原理 当viper被调用来获取参数时,它的基本执行逻辑如下: 1.通过自己的内部实现,获取指定对象(配置文件,环
阅读全文
摘要:安装golang github.com/hyperledger/fabric-contract-api-go依赖包的时候,长时间无响应,最后报如下错误: go: github.com/hyperledger/fabric-contract-api-go@v1.0.0: Get https://pro
阅读全文
摘要:1、不定参数类型 不定参数是指函数传入的参数个数为不定数量。 代码中的args是一个数组切片,而且只能放在参数中的最后面。 2、不定参数的传递 3、任意类型的不定参数
阅读全文
摘要:1、判断语句if 条件表达式没有括号 支持初始化表达式 初始化语句的变量自在本block内有效 2、循环语句for Go循环只有for关键字,没有while,但可以达到同样的效果 3、选择语句switch 条件语句可以使用任何类型或表达式,甚至不填 不需要写break,一旦条件符合自动终止,如果希望
阅读全文
摘要:iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下:
阅读全文