摘要:
在Go中,不支持循环引用,即package a引用了packageb以后,package b就不能引用package a了。最简单的场景:package a中定义context.go用来保存上下文信息,同时package a调用了package b,另一方面,package b需要使用上下文信息,就... 阅读全文
摘要:
退出运行中的程序,可以粗暴的kill -9 $PID,但这样会破坏业务的完整性,有可能一个正在在执行的逻辑半途而费,从而产生不正常的垃圾数据。本文总结在go语言中,如何能优雅的退出网络应用,涉及的知识包括:signal,channel,WaitGroup等。从这里:https://gobyexamp... 阅读全文
摘要:
Go中使用*号表示指针,但是没有指针算数,不能对其进行加减。同时内存管理都由Go来负责,不需要拖动释放内存。Go中的函数接收者,可以为值类型,也可以是引用类型。看代码:package main import ("fmt") type Rect struct {X, Y,Area,Length flo... 阅读全文
摘要:
Go中的ioutil包可以方便的实现文件读写。代码:package main import ("fmt""io/ioutil") func main() {filename := "test.txt"data := []byte("hello")ioutil.WriteFile(filename, ... 阅读全文
摘要:
Go语言中,获取时间戳用time.Now().Unix(),格式化时间用t.Format,解析时间用time.Parse。看实例代码:package main import ("fmt""time") func main() {//获取时间戳timestamp := time.Now().Unix(... 阅读全文
摘要:
字典(map)是Go语言内置的数据结构,一组键值对的无序集合。看代码:package main import "fmt" func main() { //使用make申请一个map,键为string类型,值为int类型m := make(map[string]int) //设置值m["k1"] = ... 阅读全文
摘要:
append用来将元素添加到切片末尾并返回结果。看代码:package mainimport "fmt"func main() {x := []int {1,2,3}y := []int {4,5,6}//注意下面这两个区别fmt.Println(append(x,4,5,6))fmt.Printl... 阅读全文
摘要:
下面的代码中,列出了Go官方包中常见的字符串函数。package main import s "strings"import "fmt" //为打印函数起个小名儿,比较有特点的用法var p = fmt.Println func main() { p("Contains: ", s.Contains... 阅读全文
摘要:
defer用于延迟执行,可以类比于java或c++中的析构函数。查看一段示例代码:func Contents(filename string) (string, error) {//打开文件f, err := os.Open(filename)if err != nil {return "", er... 阅读全文
摘要:
Go语言中可以为返回值定义名称。代码实例:package main import "fmt" func add1(a int, b int) int {return a + b} //将返回值取名为sumfunc add2(a int, b int) (sum int) {sum = a + bre... 阅读全文