go-lang快速入门 二

  1. Go 没有类。不过你可以为结构体类型定义方法。方法就是一类带特殊的 接收者 参数的函数。func (v Vertex) Abs() float64 {

  2. 指针接收者,1.方法能够修改其接收者指向的值。2.这样可以避免在每次调用方法时复制该值。

  3. 接口类型 是由一组方法签名定义的集合。接口类型的变量可以保存任何实现了这些方法的值。空的接口 type AnyType interface {} 可以任何类型的变量。

  4. 接口与隐式实现,没有语法的显式声明,例如C++会显式表示继承那些接口。

  5. 在内部,接口值可以看做包含值和具体类型的元组。fmt.Printf("(%v, %T)\n", i, i)

  6. 类型断言 t, ok := i.(T)

  7. 类型的选择 switch v := i.(type) {

  8. goroutine go

  9. ch := make(chan int) 。  a := make([]int, 5) make 函数会分配一个元素为零值的数组并返回一个引用了它的切片。m = make(map[string]Vertex)。

  10. 带缓冲的信道 ch := make(chan int, 100)

  11. 信道的range和close。

  12. select case语句可以使go routine等待多个通信操作。

  13. tick := time.Tick(100 * time.Millisecond)   select {
                                                                     case <-tick:
                                                                          fmt.Println("tick.")

  14. 等价二叉树查找

    package main
    
    import "golang.org/x/tour/tree"
    import "fmt"
    
    // Walk 步进 tree t 将所有的值从 tree 发送到 channel ch。
    func Walk(t *tree.Tree, ch chan int) {
    	if t.Left != nil {
    		Walk(t.Left, ch)
    	}
    	ch <- t.Value
    	if t.Right != nil {
    		Walk(t.Right, ch)
    	}
    }
    
    func WalkEnd(t *tree.Tree, ch chan int) {
    	Walk(t,ch)
    	close(ch)
    }
    
    // Same 检测树 t1 和 t2 是否含有相同的值。
    func Same(t1, t2 *tree.Tree) bool {
    	c1,c2 := make(chan int),make(chan int)
    	go WalkEnd(t1, c1)
    	go WalkEnd(t2, c2)
    	for {
    		v1,k1 := <-c1
    		v2,k2 := <-c2
    		fmt.Println(v1,v2)
    		if v1 != v2 || k1 != k2 {
    			return false
    		}
    		if k1 == k2 && k1== false {
    			return true
    		}
    	}
    	
    	return true
    }
    
    func main() {
    	//ch := make(chan int)
    /*	go func() {
    		Walk(tree.New(1), ch)
    		close(ch)
    	}()
    	for v := range ch {
    		fmt.Println(v)
    	}*/
    	fmt.Println(Same(tree.New(1), tree.New(1)))
    	fmt.Println(Same(tree.New(1), tree.New(2)))
    }
  15. Go 标准库中提供了 sync.Mutex 互斥锁类型及其两个方法:Lock和Unlock

发布了12 篇原创文章 · 获赞 1 · 访问量 903

猜你喜欢

转载自blog.csdn.net/huafable007/article/details/101568912