初级会员
  • 第 15543 位会员
  • GreatBedAwake
  • 2018-01-17 22:14:40
  • Offline
  • 20 48

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 运行下面这段代码你会看到使用静态变量和闭包的一个区别 ```go package main import "fmt" var autoNum int func autoSumStatic() (func ()int){ return func() int{ autoNum++ return autoNum } } func autoSumColsure() (func ()int) { var autoNum int return func() int{ autoNum++ return autoNum } } func main() { f := autoSumStatic() for j := 0; j<10; j++{ fmt.Println(f()) } f = autoSumStatic() for j := 0; j<10; j++{ fmt.Println(f()) } f1 := autoSumColsure() for j := 0; j<10; j++{ fmt.Println(f1()) } f1 = autoSumColsure() for j := 0; j<10; j++{ fmt.Println(f1()) } } ``` 而结果是 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
  • go的采用组合的方式来实现继承。 ```go package main import ( "fmt" ) type IAnimal interface { Run() Escape() } type Animal struct{ Name string } func NewAnimal() IAnimal{ return &Animal{"Animal"} } func (a *Animal) Escape() { a.Run() } func (a *Animal) Run() { fmt.Printf("%s Run.\n", a.Name) } type Dog struct { Animal } func NewDog() IAnimal{ d := &Dog{} d.Name = "Dog" return d } func main() { dog := NewDog() dog.Run() dog.Escape() } ```
  • 通过tun/tap设备,将所有发往本机的流量通过接入到tun/tap网卡,然后通过你的应用读tun/tap设备的字符文件, 就可以截获本机的所有流量。
  • 评论了主题 golang channel问题
    ```go func Count(ch chan int) { ch <- 1 fmt.Println("Counting") } ``` 函数体里面的两条语句换一下位置, 你这个是因为 在你的fmt.Println 语句执行的时候 你十条通道的数据都发送并接收完成了,程序也就退出了, 多执行几次你会发现你那样写Counting的输出数量不定
  • ```go package main import ( "fmt" "time" ) func main() { waitOdd := make(chan struct{}, 1) waitEnev := make(chan struct{}, 1) waitEnev <- struct{}{} go odd(waitOdd, waitEnev) go enev(waitOdd, waitEnev) time.Sleep(3 * time.Minute) } func odd(waitodd, waitenev chan struct{}) { for i := 0; i < 10; i++ { <-waitodd fmt.Println(i*2 + 1) waitenev <- struct{}{} } } func enev(waitodd, waitenev chan struct{}) { for i := 0; i < 10; i++ { <-waitenev fmt.Println(i * 2) waitodd <- struct{}{} } } ```