go-lang快速入门 二

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

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

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

  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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FatherOfCodingMan

如果觉得有用的话,可以赏点饭钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值