随笔分类 - golang
go语言net包udp socket的使用
摘要:udp与tcp的不同在于客户端请求方式不同,udp缺少Accept函数。 一个简单的udp客户端: udp服务端代码:
阅读全文
go语言中net包tcp socket的使用
摘要:一、通过socket我们模拟请求网易 二、通过socket创建简单的服务端 通过xshell的telnet方法测试。 三、改进上面的代码,使用goroutine来处理用户的请求 四、连续的处理客户端发送的请求,根据cmd命令不同,返回不同数据。
阅读全文
go语言中常用的文件和文件夹操作函数
摘要:package main; import ( "os" "log" "time" "fmt" ) //一些常用的文件操作函数 func main() { //创建目录 //perm权限设置,os.ModePerm为0777 err := os.Mkdir("./tmp", os.ModePerm); if err != nil { log.Fatal(err); } ...
阅读全文
go语言template包中模板语法总结
摘要:package main; import ( "html/template" "os" "fmt" ) type Person struct { Id string; UserName string; Age int; Contact map[string]string; } func (p Person) Say(msg string) string...
阅读全文
go语言处理文件上传和多个文件上传
摘要:uploadOne.html代码如下: uploadMore.html代码如下: main.go代码如下: 通过http://127.0.0.1:9090/uploadOne和http://127.0.0.1:9090/upladMore来测试文件上传。
阅读全文
使用go语言的list实现一个简单的LRU缓存
摘要:package main; import ( "container/list" "errors" "sync" "fmt" "encoding/json" ) //LRU(Least recently used)最近最少使用,算法根据数据的历史访问记录来进行淘汰数据 //核心思想是"如果数据最近被访问过,那么将来被访问的几率也更高" //常见的实现方式是用一个链表保存数据 //1....
阅读全文
go语言log包的学习(log,Logger)
摘要:package main; import ( "log" "os" "time" "fmt" ) func main() { //创建输出日志文件 logFile, err := os.Create("./" + time.Now().Format("20060102") + ".txt"); if err != nil { fmt.Println(err); } /...
阅读全文
go语言path包和filepath包的学习与使用
摘要:path包的使用 filepath包的使用
阅读全文
go语言time包的学习(Time,Location,Duration,Timer,Ticker)
摘要:package main; import ( "time" "fmt" ) func main() { //time.Time代表一个纳秒精度的时间点 var t time.Time; //返回当前时间 t = time.Now(); fmt.Printf("%v\n", t); //反回所在时区 fmt.Printf("%v\n", t.Location()); //返...
阅读全文
go语言sync包的学习(Mutex、WaitGroup、Cond)
摘要:package main; import ( "fmt" "sync" "runtime" "time" ) //加锁,注意锁要以指针的形式传进来,不然只是拷贝 func total1(num *int, mu *sync.Mutex, ch chan bool) { mu.Lock(); for i := 0; i < 1000; i++ { *num += i; } ...
阅读全文
go语言中container容器数据结构heap、list、ring
摘要:heap堆的使用: list链表的使用: ring环的使用:
阅读全文
go语言中操作mysql的方法
摘要:需要下载指定的golang的mysql驱动包 下面的例子:
阅读全文
go语言中的文件创建,写入,读取,删除
摘要:package main; import ( "os" "fmt" "strconv" ) func main() { //打开文件,返回文件指针 file, error := os.Open("./1.txt"); if error != nil { fmt.Println(error); } fmt.Println(file); file.Close(); /...
阅读全文
go语言中的strings常用函数和格式化输出
摘要:package main; import ( "fmt" "strings" ) type person struct { name string; age int; } func main() { //判断是否包含某个子字符串 fmt.Println(strings.Contains("hello", "he")); //统计子符串的次数 fmt.Println(str...
阅读全文
go语言中的坑
摘要:package main; import ( "fmt" "time" "sync" ) //修改slice的坑 func add(s []int) { //当s通过append添加元素时,这里会发生内存重新分配 //s会指向新的地址 s = append(s, 3); } //当需要对slice进行修改时,建议通过函数返回值把该slice返回 func add2(s []in...
阅读全文
go语言中的并发
摘要:package main; import ( "fmt" "runtime" "sync" ) //goruntine奉行通过通信来共享内存,而不是共享内存来通信 //channel是goruntine沟通的桥梁,大都是阻塞同步的 //通过make创建,close关闭 //channel是引用类型 //使用for range来迭代操作channel //可设置单向或双向通道 //可设置...
阅读全文
go语言中的反射reflect
摘要:package main; import ( "fmt" "reflect" ) //反射refection //反射使用TypeOf和ValueOf函数从接口中获取目标对象信息 //反射会将匿名字段作为独立字段 type A struct { id int; name string; age int; } type B struct { A height int; ...
阅读全文
go语言中的接口interface
摘要:package main; import "fmt" //接口interface //接口是一个或多个方法签名的集合 //只要某个类型拥有该接口的所有方法签名,即算实现该接口。 //接口只有方法声明,没有实现,没有数据字段 //接口可以匿名嵌入其它接口,或嵌入到结构中。 //GO语言中的所有类型都实现了空接口 type Empty interface { } type Inf inter...
阅读全文
go语言中的方法method
摘要:package main; import "fmt" //重新定义一个类型 //为该INT类型扩展方法 type INT int; type A struct { name string; } type B struct { name string; } func main() { a := A{}; a.Print(); //指针传递 a.Print2(); fmt....
阅读全文