GO语言语法学习进度(3)

1.关键字chan通道


2.关键字defer

①若函数中有多个defer,其执行顺序为先进后出,可以理解为栈。

package main

import "fmt"

func main() {

  for i := 0; i < 5; i++ {

    defer fmt.Println(i)

  }

}

Output:

4

3

2

1

0

②return会做几件事

    1.给返回值赋值;

     2.调用defer表达式;

     3.返回调用函数;

    若defer表达式有返回值,将会被丢弃。

package main

import "fmt"

func main() {

    fmt.Println(increase(1))

}

func increase(d int) (ret int) {

  defer func() {

    ret++

  }()

  return d

}

Output:

2

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、数据类型转换 https://studygolang.com/articles/10838 package m...
    蓓蓓的万能男友阅读 4,722评论 0 1
  • 使用定时器t := time.NewTicker(1 * time.Second)// 第一种方式for { ...
    qishuai阅读 4,432评论 0 2
  • Golang是我最喜欢的一门语言,它简洁、高效、易学习、开发效率高、还可以编译成机器码… 虽然它一出世,就饱受关注...
    盘木阅读 8,901评论 0 7
  • 欢迎关注公众号:灰子学技术 写在前面的话: 在接触defer之后,觉得Go的这一特性很好,有点类似于C++的析构函...
    灰常出色阅读 5,473评论 15 74
  • fmt格式化字符串 格式:%[旗标][宽度][.精度][arg索引]动词旗标有以下几种:+: 对于数值类型总是输出...
    皮皮v阅读 4,776评论 0 3