内容简介:有一些常用的工具函数,我们把它们放到gomisc这个包中。示例:输出:
有一些常用的 工具 函数,我们把它们放到gomisc这个包中。
工具介绍
Slice中的值Unique
func IntSliceUnique(s []int) []int func StringSliceUnique(s []string) []string
示例:
package main import ( "github.com/goinbox/gomisc" "fmt" ) func main() { TestIntSliceUnique() TestStringSliceUnique() } func TestIntSliceUnique() { s := []int{1, 2, 2, 3, 3, 3, 4, 4, 4, 4} fmt.Println("origin slice is: ", s) s = gomisc.IntSliceUnique(s) fmt.Println("after call slice is: ", s) } func TestStringSliceUnique() { s := []string{"a", "ab", "ab", "abc", "abc", "abc", "abcd", "abcd", "abcd", "abcd", "abcd"} fmt.Println("origin slice is: ", s) s = gomisc.StringSliceUnique(s) fmt.Println("after call slice is: ", s) }
输出:
origin slice is: [1 2 2 3 3 3 4 4 4 4] after call slice is: [1 2 3 4] origin slice is: [a ab ab abc abc abc abcd abcd abcd abcd abcd] after call slice is: [a ab abc abcd]
文件、目录是否存在
func FileExist(path string) bool func DirExist(path string) bool
示例:
package main import ( "github.com/goinbox/gomisc" "fmt" ) func main() { TestFileExist() TestDirExist() } func TestFileExist() { f := "/etc/passwd" r := gomisc.FileExist(f) if r { fmt.Println(f, "is exist") } else { fmt.Println(f, "is not exist") } } func TestDirExist() { d := "/home/ligang/devspace" r := gomisc.DirExist(d) if r { fmt.Println(d, "is exist") } else { fmt.Println(d, "is not exist") } }
输出:
/etc/passwd is exist /home/ligang/devspace is exist
多个[]byte拼接
func AppendBytes(b []byte, elems ...[]byte) []byte
示例:
package main import ( "github.com/goinbox/gomisc" "fmt" ) func main() { b := []byte("abc") b = gomisc.AppendBytes(b, []byte("def"), []byte("ghi")) fmt.Println(string(b)) }
输出:
abcdefghi
列出目录中的所有文件(包括子目录)
func ListFilesInDir(rootDir string) ([]string, error)
示例:
package main import ( "github.com/goinbox/gomisc" "fmt" ) func main() { fileList, err := gomisc.ListFilesInDir("/home/ligang/tmp") if err != nil { fmt.Println(err) return } for _, path := range fileList { fmt.Println(path) } }
输出:
/home/ligang/tmp/misc/accounts.json /home/ligang/tmp/go/main.go /home/ligang/tmp/go/.idea/modules.xml /home/ligang/tmp/go/.idea/workspace.xml /home/ligang/tmp/go/.idea/go.iml
保存/解析json文件
func SaveJsonFile(filePath string, v interface{}) error func ParseJsonFile(filePath string, v interface{}) error
示例:
package main import ( "github.com/goinbox/gomisc" "fmt" ) func main() { filePath := "/tmp/test_save_parse_json_file.json" v1 := make(map[string]string) v1["k1"] = "a" v1["k2"] = "b" v1["k3"] = "c" err := gomisc.SaveJsonFile(filePath, v1) if err != nil { fmt.Println("save json file failed: " + err.Error()) } v2 := make(map[string]string) err = gomisc.ParseJsonFile(filePath, &v2) if err != nil { fmt.Println("parse json file failed: " + err.Error()) } ok := true for k, v := range v2 { if v != v1[k] { ok = false fmt.Println("save parse json file error, k: " + k + " not equal") } } if ok { fmt.Println("save parse json file ok") } }
输出:
save parse json file ok
字符串截取
func SubString(str string, start, cnt int) (string, error)
示例:
package main import ( "github.com/goinbox/gomisc" "fmt" ) func main() { s := "abcdefg" _, err := gomisc.SubString(s, 3, 20) fmt.Println(err) _, err = gomisc.SubString(s, 10, 3) fmt.Println(err) ss, _ := gomisc.SubString(s, 3, 4) fmt.Println(ss) }
输出:
end too long end too long defg
时间格式化定义
const ( TIME_FMT_STR_YEAR = "2006" TIME_FMT_STR_MONTH = "01" TIME_FMT_STR_DAY = "02" TIME_FMT_STR_HOUR = "15" TIME_FMT_STR_MINUTE = "04" TIME_FMT_STR_SECOND = "05" ) // 时间格式:yy-mm-dd H:i:s func TimeGeneralLayout() string { layout := TIME_FMT_STR_YEAR + "-" + TIME_FMT_STR_MONTH + "-" + TIME_FMT_STR_DAY + " " layout += TIME_FMT_STR_HOUR + ":" + TIME_FMT_STR_MINUTE + ":" + TIME_FMT_STR_SECOND return layout }
生成随机数
func RandByTime(t *time.Time) int64
示例:
package main import ( "github.com/goinbox/gomisc" "fmt" "time" ) func main() { tm := time.Now() fmt.Println(gomisc.RandByTime(&tm), gomisc.RandByTime(&tm), gomisc.RandByTime(nil)) }
输出:
欢迎大家使用,使用中有遇到问题随时反馈,我们会尽快响应,谢谢!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Jodd 3.9 发布,Java 常用工具包
- Json常用序列化工具包大比拼
- busybox 1.27.2 发布,Unix 常用工具包
- Jodd 4.1.0 发布,Java 常用工具包
- Jodd 5.1.5 发布,Java 常用工具包
- Jodd 3.6.8 发布,Java 常用工具包
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
反应式设计模式
Roland Kuhn、Brian Hanafee、Jamie Allen / 何品、邱嘉和、王石冲、林炜翔审校 / 清华大学出版社 / 2019-1-1 / 98.00 元
《反应式设计模式》介绍反应式应用程序设计的原则、模式和经典实践,讲述如何用断路器模式将运行缓慢的组件与其他组件隔开、如何用事务序列(Saga)模式实现多阶段事务以及如何通过分片模式来划分数据集,分析如何保持源代码的可读性以及系统的可测试性(即使在存在许多潜在交互和失败点的情况下)。 主要内容 ? “反应式宣言”指南 ? 流量控制、有界一致性、容错等模式 ? 得之不易的关于“什么行不通”的经验 ? ......一起来看看 《反应式设计模式》 这本书的介绍吧!