• 函数

    不支持命名参数与默认值

    • 可变参数

      求多个int的和

      func IntSum(x ...int) {
      sum := 0
      for _, v := range x {
      sum += v
      }
      return sum
      }
    • 返回值命名

      相当于在函数内部声明了返回值变量

      func calc(x, y int) (sum int) {
      sum := x + y
      return
      }
    • 全局变量

      全局变量尽量少用,需要有区分度,再局部变量可能会重复声明出现混淆

      var name = "mkl"
      func main() {
      name = "bob" // 修改全局变量
      name := "Marry" // 又重新声明一个可用的声明局部变量
      }
    • if判断语句中的作用域

      不得在语句块外部使用

      if v, ok != m["mkl"]; ok {
      }
    • 函数类型与函数签名

      • 自定义函数类型
        type myFunc func()
        
        var fx myFunc
        fx = func() { fmt.Println("hello world!") } // 赋值
        fx()
      • 函数签名

        函数定义的格式

    • 高阶函数

      将函数作为参数传入

      能够提高代码的可读性

    • 闭包

      • 匿名函数

        必须立即调用 或者 定义变量名接收

        用在回调函数。闭包

      闭包=函数+引用

      func adder() func(int)int{
      x := 20
      // 函数内部引用了外部函数的变量x
      return func(y int) int {
      x -= y
      return x
      }
      }
      f := adder()
      f(10)
    • defer函数

      函数退出时调用

      执行顺序:先进后出

      适用于释放资源

      func main() {
      fmt.Println("start")
      defer fmt.Println(1)
      defer fmt.Println(2)
      defer fmt.Println(3)
      fmt.Println("end")
      }
      // start
      // end
      // 3
      // 2
      // 1
      • return 语句的底层实现
        return x => 1.返回值=x 2.运行defer 3.RET指令
    • 内置函数

      • close

        关闭channel

      • len

        求 string、array、slice、map、channel的长度

      • new

        分配内存,分配值类型,返回指针

      • make

        分配内存,分配引用类型,返回原对象本身

      • append

        追加元素至数组、slice中

      • panic与recover

        错误处理

函数 | Go语言的更多相关文章

  1. 3204: 数组做函数参数--排序函数2--C语言

    3204: 数组做函数参数--排序函数2--C语言 时间限制: 1 Sec  内存限制: 128 MB提交: 211  解决: 143[提交][状态][讨论版][命题人:smallgyy] 题目描述 ...

  2. 3203 数组做函数参数----排序函数--C语言版

    3203: 数组做函数参数----排序函数--C语言版 时间限制: 1 Sec  内存限制: 128 MB提交: 253  解决: 151[提交][状态][讨论版][命题人:smallgyy] 题目描 ...

  3. <编译原理 - 函数绘图语言解释器(1)词法分析器 - python>

    <编译原理 - 函数绘图语言解释器(1)词法分析器 - python> 背景 编译原理上机实现一个对函数绘图语言的解释器 - 用除C外的不同种语言实现 解释器分为三个实现块: 词法分析器: ...

  4. <编译原理 - 函数绘图语言解释器(2)语法分析器 - python>

    <编译原理 - 函数绘图语言解释器(2)语法分析器 - python> 背景 编译原理上机实现一个对函数绘图语言的解释器 - 用除C外的不同种语言实现 设计思路: 设计函数绘图语言的文法, ...

  5. PHP:函数和语言结构(转)

    转自:https://www.cnblogs.com/fanqiechaodan/articles/5222366.html 什么是语言结构呢?它和函数有什么不同吗? 1.  什么是语言结构和函数 语 ...

  6. <编译原理 - 函数绘图语言解释器(3)解释器 - python>

    <编译原理 - 函数绘图语言解释器(3)解释器 - python> <编译原理 - 函数绘图语言解释器(2)词法分析器 - python> <编译原理 - 函数绘图语言解 ...

  7. 第四章 函数(JavaScript:语言精粹)

    函数包含一组语句,用来指定对象的行为,其代码可以用来重复使用.   一般来说,编程就是将一组需求分解成一组函数和数据结构的技能.   概览:函数对象 | 函数字面量 | 调用 | 方法调用模式 | 函 ...

  8. 大数的加法函数--c语言

    浏览网站http://paste.ubuntu.com/23687758/ #include<stdio.h> #include<stdlib.h> #include<s ...

  9. Linux下普通IO文件操作函数---C语言

    普通文件IO总结 FILE结构体    typedef struct   {       int level; /*填充/清空一级缓存*/     unsigned flag; /*文件状态指针*/ ...

  10. 【转】 strrchr()函数---C语言

    转自:https://baike.baidu.com/item/strrchr/4621437?fr=aladdin   函数名称: strrchr 函数原型:char *strrchr(const ...

随机推荐

  1. C#常见的四种经典查找算法

    前言 在编程领域,数据结构与算法是构建高效.可靠和可扩展软件系统的基石.它们对于提升程序性能.优化资源利用以及解决复杂问题具有至关重要的作用.今天大姚给大家分享四种C#中常见的经典查找算法. C#数据 ...

  2. Maven的顶级功能——依赖管理

    依赖管理 依赖管理解决的问题 我们学完一个语言的语法之后,我们应该都能知道函数的引用或者类的创建等了.为了方便管理,我们就会把一些特定的功能实现写在一个代码文件中,我们只需要使用的时候导入就行了,这样 ...

  3. Python计算1到100偶数的加和

    sum_value = 0 for i in range(1,101): if i % 2 == 1: continue sum_value += i print(sum_value) print(s ...

  4. PostgreSQL系统表或视图中pg_node_tree类型值解析

    PostgreSQL系统表或视图中pg_node_tree类型值解析 pg_node_tree类型说明 pg_node_tree是一种openGauss/PostgreSQL内部数据类型,用于表示树形 ...

  5. 痞子衡嵌入式:在i.MXRT启动头FDCB里配置串行NOR Flash多个寄存器的注意事项

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在FDCB里配置串行NOR Flash多个寄存器的注意事项. 关于使用 i.MXRT 启动头 FDCB 来设置 Flash 内部寄存器, ...

  6. Java反射调用get/set方法,你还在这样用?

    之前有些场景下碰到需要用到反射调用JavaBean的get/set方法时都是像以下这种拼接的方式来实现方法的调用. Article article = new Article(); article.s ...

  7. RL 基础 | 如何复现 PPO,以及一些踩坑经历

    最近在复现 PPO 跑 MiniGrid,记录一下- 这里跑的环境是 Empty-5x5 和 8x8,都是简单环境,主要验证 PPO 实现是否正确. 01 Proximal policy Optimi ...

  8. Vim基本使用指南

    一般模式:移动光标的方法 h或 向左方向键(←)光标向左移动一个字符 j或 向下方向键(↓)光标向下移动一个字符 k或 向上方向键(↑)光标向上移动一个字符 l或 向右方向键(→)光标向右移动一个字符 ...

  9. java——棋牌类游戏五子棋(webwzq1.0)之三(Msg)

    package msg; import java.io.ObjectInputStream; import java.net.DatagramSocket; /******************** ...

  10. pycharm之远程开发

    转载:https://amos-x.com/index.php/amos/archives/pycharm-remote/ 前言 远程开发什么意思? 远程开发就是用本地的个人电脑进行代码编写开发,但是 ...