Strconv
07.Strconv 01.string与int类型转换 1.0 strconv包介绍 strconv包实现了基本数据类型与其字符串表示的转换 主要有以下常用函数: Atoi()、Itia()、parse系列、format系列、append系列。 更多函数请查看官方文档 (opens new window)。 1.1 Atoi()转int Atoi()函数用于将字符串类型的整数转换为int类型,函数签名如下。 123456789101112131415package mainimport ( "fmt" "strconv")func main() { s1 := "100" i1, err := strconv.Atoi(s1) if err != nil { fmt.Println("can't convert to int") } else { fmt.Printf("type:...
IO
06.IO操作 01.打开和关闭文件 os.Open()函数能够打开一个文件,返回一个*File和一个err。 对得到的文件实例调用close()方法能够关闭文件。 为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句。 12345678910111213141516package mainimport ( "fmt" "os")func main() { // 只读方式打开当前目录下的main.go文件 file, err := os.Open("./main.go") if err != nil { fmt.Println("open file failed!, err:", err) return } // 关闭文件 file.Close()} 02.读取文件 2.1 file.Read()指定读取size 1234567891011121314151617181920...
Log
05.Log 01.日志模块介绍 参考博客(opens new window) 1.1 介绍 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能 能够将事件记录到文件中,而不是应用程序控制台。 日志切割-能够根据文件大小、时间或间隔等来切割日志文件。 支持不同的日志级别。例如INFO,DEBUG,ERROR等。 能够打印基本信息,如调用文件/函数名和行号,日志时间等。 1.2 默认的Go Logger 实现一个Go语言中的日志记录器非常简单——创建一个新的日志文件,然后设置它为日志的输出位置。 1234567891011121314151617181920212223242526272829package mainimport ( "log" "net/http" "os")// 第一:设置Loggerfunc SetupLogger() { logFileLocation, _ := os.OpenFile("./test.log", os.O_CREATE|...
Flag
04.Flag 01.Flag Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。 1.1 os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数 os.Args是一个存储命令行参数的字符串切片,它的第一个元素是执行文件的名称。 123456789101112131415161718192021package mainimport ( "fmt" "os")//os.Args demofunc main() { //os.Args是一个[]string if len(os.Args) > 0 { for index, arg := range os.Args { fmt.Printf("args[%d]=%v\n", index, arg) } }}/* C:\aaa\gin_demo> go run main.go a b cargs[1]=...
encodingjson
03.encoding/json包 01.struct与json 比如我们 Golang 要给 App 或者小程序提供 Api 接口数据,这个时候就需要涉及到结构体和Json 之间的相互转换 GolangJSON 序列化是指把结构体数据转化成 JSON 格式的字符串 Golang JSON 的反序列化是指把 JSON 数据转化成 Golang 中的结构体对象 Golang 中 的 序 列 化 和 反 序 列 化 主 要 通 过 “encoding/json” 包 中 的 json.Marshal() 和json.Unmarshal()方法实现 1.1 struct转Json字符串 1234567891011121314151617181920212223package mainimport ( "encoding/json" "fmt")type Student struct { ID int Gender string name string //私有属性不能被 json 包访问 Sno string}fu...
Time
02.Time 01.时间类型 我们可以通过 time.Now()函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息。 注意:%02d 中的 2 表示宽度,如果整数不够 2 列就补上 0 1234567891011121314151617181920package mainimport ( "fmt" "time")func main() { now := time.Now() //获取当前时间 fmt.Printf("current time:%v\n", now) year := now.Year() //年 month := now.Month() //月 day := now.Day() //日 hour := now.Hour() //小时 minute := now.Minute() //分钟 second := now.Second() //秒 // 打印结果为:2021-05-19 09:20:06 fmt.Printf...
fmt
01.fmt 01.常用占位符 动词 功能 %v 按值的本来值输出 %+v 在 %v 的基础上,对结构体字段名和值进行展开 %#v 输出 Go 语言语法格式的值 %T 输出 Go 语言语法格式的类型和值 %% 输出 %% 本体 %b 整型以二进制方式显示 %o 整型以八进制方式显示 %d 整型以十进制方式显示 %x 整型以 十六进制显示 %X 整型以十六进制、字母大写方式显示 %U Unicode 字符 %f 浮点数 %p 指针,十六进制方式显示 02. Print Println: 一次输入多个值的时候 Println 中间有空格 Println 会自动换行,Print 不会 Print: 一次输入多个值的时候 Print 没有 中间有空格 Print 不会自动换行 Printf Printf 是格式化输出,在很多场景下比 Println 更方便 123456789101112package mainimport "fmt"func main() { fmt....
Go设计模式 - 抽象工厂方法模式
6. 抽象工厂方法模式 6.1 抽象工厂方法模式中的角色和职责 **抽象工厂(Abstract Factory)角色:**它声明了一组用于创建一族产品的方法,每一个方法对应一种产品。 **具体工厂(Concrete Factory)角色:**它实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。 **抽象产品(Abstract Product)角色:**它为每种产品声明接口,在抽象产品中声明了产品所具有的业务方法。 **具体产品(Concrete Product)角色:**它定义具体工厂生产的具体产品对象,实现抽象产品接口中声明的业务方法。 6.2 抽象工厂方法模式的实现 抽象工厂方法模式的实现代码如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182...
Go设计模式 - 工厂方法模式
5. 工厂方法模式 5.1 工厂方法模式中的角色和职责 抽象工厂(Abstract Factory)角色:工厂方法模式的核心,任何工厂类都必须实现这个接口。 工厂(Concrete Factory)角色:具体工厂类是抽象工厂的一个实现,负责实例化产品对象。 抽象产品(Abstract Product)角色:工厂方法模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 具体产品(Concrete Product)角色:工厂方法模式所创建的具体实例对象。 5.2 工厂方法模式的实现 工厂方法模式的实现代码如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364package mainimport "fmt"// TODO 工厂模式// ----抽象层----// 文具类type AbstractStationery interface { Show()&...
Go设计模式 - 简单工厂模式
4. 简单工厂模式 4.1 简单工厂模式角色和职责 简单工厂模式并不属于GoF的23种设计模式。他是开发者自发认为的一种非常简易的设计模式,其角色和职责如下: 工厂(Factory)角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 抽象产品(AbstractProduct)角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 具体产品(Concrete Product)角色:简单工厂模式所创建的具体实例对象。 4.2 简单工厂模式实现 简单工厂方法模式的实现代码如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950package mainimport "fmt"// TODO 简单工厂模式// ----抽象层----type Stationery interface { Show()}// ----实现层----type...



