
go基础
红色烟火
一只学习猫
展开
-
go基础文件处理
在web传输文件过来使用FormFile()来进行接受,这个函数返回的类型为*multipart.FileHeader,可以利用他的自带函数进行open打开文件img, _ := c.FormFile("img")imgurl, err := tool.WriteImg(img, good.Name)//图片处理func WriteImg(file *multipart.FileHeader, name string) (string, error) { filepoint, err := fi原创 2022-03-14 14:25:00 · 2190 阅读 · 0 评论 -
go中validate中的验证规则
required //这将验证该值不是数据类型的默认零值。数字不为0,字符串不为 " ", slices, maps, pointers, interfaces, channels and functions 不为 nilisdefault //这验证了该值是默认值,几乎与所需值相反。len=10 //对于数字,长度将确保该值等于给定的参数。对于字符串,它会检查字符串长度是否与字符数完全相同。对于切片,数组和map,验证元素个数。max=10 //对于数字,max将确保该值小于原创 2022-03-06 18:36:08 · 3368 阅读 · 0 评论 -
golang测试质量保证
go test1、功能测试含有单元测试代码的go文件必须以_test.go结尾单元测试文件名_test.go前面的部分最好是被测试的函数所在的go文件的文件名单元测试的函数名必须以Test开头,是可导出的、公开的函数测试函数的签名必须接收一个指向testing.T类型的指针,并且不能返回任何值函数名最好是Test +要测试的函数名//目录下所有单元测试都会执行go test -v 目录 //测试覆盖率go test -cover利用t.run测试多组案例type test st原创 2022-02-11 12:29:53 · 732 阅读 · 2 评论 -
goalng的反射基础
reflect.value和reflect.Type1、修改对应的值如:func S_s() { i := 3 ipv := reflect.ValueOf(&i) ipv.Elem().SetInt(4) fmt.Println(i)}修改值得注意事项2、type的使用一些特殊的方法3、Json和struct的转换//字符串与结构体转换func S_s() { p := perSon{ Name: "wanb", Age: 123, } //s原创 2022-02-11 12:32:28 · 420 阅读 · 0 评论 -
golang并发 03-context
context多线程并发神器原创 2022-02-09 17:37:49 · 572 阅读 · 0 评论 -
golang并发 04-并发模式
pipeline模式//pipeline模式func Pipeline() { fmt.Println("---开始工作---") coms := parts(10) part := process(coms) out(part) time.Sleep(100 * time.Second)}func parts(num int) <-chan int { ch := make(chan int, 5) go func() { defer close(ch) for i原创 2022-02-09 17:37:12 · 587 阅读 · 0 评论 -
go中使用了io.Copy()和使用普通方法进行文件拷贝的区别
今天想完成以前总是出错的文件上传,今天在文件上传中,我发现了一个有趣的东西,就是文件上传和下载时,有没有使用io.Copy来进行文件拷贝的区别普通方法func main() { op,err1 :=os.Open("./a1.text") of,err2 :=os.Create("./a2.text") if err1!=nil || err2!=nil{ fmt.Println("文件拷贝失败") return } var buf []byte=m原创 2020-08-03 17:51:19 · 3792 阅读 · 1 评论 -
go的正则
o使用正则要调用regexp包可以使用regexp.MustCompile(‘匹配条件’)或者regexp.Compile(‘匹配条件’)来生生成正则表达式1、查询返回boolfunc (re *Regexp) Match(b []byte) boolMatch检查b中是否存在匹配func (re *Regexp) MatchString(s string) boolMatchString类似Match,但匹配对象是字符串。单一匹配func (re *Regexp) Find(b []原创 2020-08-01 16:36:35 · 326 阅读 · 0 评论 -
go的web开发
web开发流程一、创立一个web服务器自己配置handler处理机package mainimport ( "net/http" "fmt")type myHandle struct { content string}//实现了接口func (h *myHandle) ServeHTTP(w http.ResponseWriter,r *http.Request){ fmt.Println("hillo handle") fmt.Fprint(w,"hillo",h.co原创 2020-08-01 16:35:19 · 1442 阅读 · 0 评论 -
go爬虫
思路1、明确要爬取的网站和信息2、爬取网站得到全部信息3、提取出有用的信息4、进行保存,或者进一步爬取信息代码可以使用get和post进行访问网站,以下是爬取网站信息的一个实例package mainimport ( "fmt" "strconv" "net/http" "regexp" "os")/*这是一个爬虫的实战练习爬取https://duanziwang.com/网站的有用信息并按照分页来使用go协程 */ //进行网页爬取func WormWork原创 2020-08-01 16:34:03 · 584 阅读 · 0 评论 -
go的设计模式
在2020年七月最后一个星期,我开始学习了go的设计模式设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结分类创建型( 单例模式、简单工厂模式、工厂方法模式、抽象厂模式、建造者模式、原型模式)结构型(代理模式、适配器模式、装饰模式、桥接模式、组合模式、享元模式、外观模式)行为型(观察者模式、模板方法模式、命令模式、状态模式、职责链模式、解释器模式、中介者模式、访问者模式、策略模式、备忘录模式、迭代器模式)五大原则1、开闭原则开放扩展,关闭修改开闭原则的主旨是为了原创 2020-08-01 16:10:14 · 3385 阅读 · 0 评论 -
go语言基础学习笔记总结2
数组切片字符串类型的转换map字典结构体数组、切片、map和结构体做函数参数指针随机数一、数组在定义时赋值:package mainimport "fmt"func main(){ var arr [3]int=[3]int{110,120,130} //在定义是赋值的格式 fmt.Println(arr)}进行遍历:也可以使用for语句来遍历数组package mainimport "fmt"func main(){ var arr [3]int.原创 2020-05-23 15:53:09 · 349 阅读 · 0 评论 -
go语言基础学习笔记总结1
go语言的目录结构go语言执行的分析流程go语言的开发注意事项go的变量常量输入输出格式类型转换循环和分支函数局部变量和全局变量一、目录结构在环境变量中设置GOPARH,项目就到GOPARH指定的目录中运行为了更好的管理项目中的文件,要求将文件都要放在相应的文件夹中。GO语言规定如下的文件夹如下:。src目录:用于以代码包的形式组织并保存Go源码文件。(比如: gophs等)。pkg 目录:用于存放经由go install命令构建安装后的代码包(包含Go库源码文件)的“a".原创 2020-05-23 12:18:14 · 287 阅读 · 0 评论