摘要: package main import ( "bufio" "fmt" "io" "strings" ) type intGen func() int func (g intGen) Read(p []byte) (n int, err error) { next := g() if next > 10000 { //因为是斐波那契额数列,所以... 阅读全文
posted @ 2019-12-19 19:43 离地最远的星 阅读(194) 评论(0) 推荐(0) 编辑
摘要: package main import ( "fmt" "sync" "time" ) func add(i *int, mutex *sync.Mutex) { mutex.Lock() *i++ mutex.Unlock() } func main() { var mutex sync.Mutex //声明锁的时候不要用指针,锁需要... 阅读全文
posted @ 2019-12-19 19:42 离地最远的星 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 命令行参数,向整个函数传参 go run xxx.go argv1 argv2 os.Args package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args) } 来自为知笔记(Wiz) 阅读全文
posted @ 2019-12-19 19:40 离地最远的星 阅读(76) 评论(0) 推荐(0) 编辑
摘要: slice的实现 切片的结构定义 type SliceHeader struct{ Data uintptr Len int Cap int } //由上述代码可以看出切片的开头部分和Go字符串一样,但是切片多了一个Cap成员来表示切片指向的内存空间的最大容量(对应元素的个数,而不是字节数) 切片的定义方式 var ( a []int b = []int{} ... 阅读全文
posted @ 2019-12-19 19:40 离地最远的星 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 类型断言传递的是实例值的副本,如果实例是指针,则是指针的副本 package main import "fmt" func main() { var a = 34 var i interface{} = &a o := i.(*int) fmt.Println(i, o) } // output: 0xc4200160a0 0xc4200160a0来自为... 阅读全文
posted @ 2019-12-19 19:39 离地最远的星 阅读(95) 评论(0) 推荐(0) 编辑
摘要: package main import "fmt" type A struct{ } func (a *A) Say(){ fmt.Print("haha") } func main(){ var a A a.Say() //方法绑定的是实例指针编译器会自动把实例转成指针类型传到方法中,反之如果方法绑定的是实例,指针也会被编译器自动转成实例传入到方法内部 (&a).Say(... 阅读全文
posted @ 2019-12-19 19:38 离地最远的星 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 支持匿名接口类型,可直接用为变量定义,或结构体字段 package main type data struct { } func (data) string() string { return "haha" } type node struct { data interface { string() string //匿名接口类型 } } fun... 阅读全文
posted @ 2019-12-19 19:38 离地最远的星 阅读(105) 评论(0) 推荐(0) 编辑
摘要: package main import ( "bufio" "fmt" "io" "strings" ) type intGen func() int //正规的函数式编程都是先定义函数类型 func fibonacci() intGen { //声明一个返回intGen类型的斐波那契生成器 a, b := 0, 1 return func... 阅读全文
posted @ 2019-12-19 19:36 离地最远的星 阅读(94) 评论(0) 推荐(0) 编辑
摘要: package main import ( "fmt" "net" "strings" "time" ) type Client struct { C chan string Name string Addr string } //创建全局map,存储在现空间 var onlineMap map[string]Client //... 阅读全文
posted @ 2019-12-19 19:35 离地最远的星 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 使用反射机制,编写函数的适配器,桥连接 test1 := func(v1 int, v2 int){ t.Log(v1,v2) } 基本介绍 反射可以在运行时动态获取变量的各种信息,比如变量的类型,类别 如果是结构体变量,还可以获取到结构体本身的信息(包括字段,方法) 通过反射,可以修改变量的值可以调用关联的方法 使用反射,需要import("reflect") 变量 inte... 阅读全文
posted @ 2019-12-19 19:35 离地最远的星 阅读(142) 评论(0) 推荐(0) 编辑