• 函数

    • 返回值带有变量名

      return时可以不写返回值,在返回值位置声明即可

      func namedRetvalue() (a, b int) {
      a = 1
      b = 2
      return
      }
    • 匿名函数
      • 定义时调用
        func(data int) {
        fmt.Println(data)
        }(100)
      • 匿名函数被赋值与调用
        f := func(data int) {
        fmt.Println(data)
        }
        f(100)
      • 匿名函数作为回调函数
        func visit(list []int, f func(int)) {
        for -, v := raneg list{
        f(v)
        }
        } visit([]int{1,2,3,4}, func(v int){
        fmt.Println(v)
        })
    • 可变参数
      func myfunc(args ...int) {
      for -, arg := range args {
      fmt.Println(arg)
      }
      }

      任意类型的可变参数

      func myfunc(args ...interface{}) {
      var typeString string
      // 类型断言
      for _, s := range args {
      switch s.(type) {
      case bool:
      typeString = "bool"
      case string:
      typeString = "string"
      case int:
      typeString = "int"
      }
      }
      fmt.Println(typeString)
      } func main() {
      myfunc(1, "a", true)
      }
    • defer延迟语句

      后进先出

      函数退出时,释放资源

      func main() {
      defer fmt.Println(1)
      defer fmt.Println(2)
      defer fmt.Println(3)
      }
      var (
      cMap = make(map[string]int)
      cMutex sync.Mutex
      ) func myfunc(key string) int {
      cMutex.Lock()
      defer cMutex.Unlock()
      return cMap[key]
      } func main() {
      ret := myfunc("A")
      fmt.Println(ret)
      }
    • Go运行时错误
      1.一个可能造成错误的函数,需要返回一个错误接口 error
      2.函数调用后需要检查错误,正确处理每一个可能发生的错误的函数
      3.实现Error() string 方法的接口
      4.errors包自定义错误,errors.New("error")
    • panic与recover

      panic会引发程序崩溃,一般用于严重的错误

      recover只在延迟函数defer中有效,调用recover捕获panic的输入值

      func RecoverPanic(entry func()) {
      defer func() {
      err := recover() switch err.(type) {
      case runtime.Error:
      fmt.Println(err)
      default:
      fmt.Println(err)
      }
      }()
      entry()
      }
    • 哈希函数
      • md5/sha-1
        import (
        "crypto/md5"
        "crypto/sha1"
        ) func main() {
        cString := "Hello, 世界"
        md5Ins := md5.New()
        md5Ins.Write([]byte(cString))
        result := md5Ins.Sum([]byte(""))
        println(result)
        sha1Ins := sha1.New()
        sha1Ins.Write([]byte(cString))
        result = sha1Ins.Sum([]byte(""))
        println(result)
        }

重温Go语法笔记 | 函数的更多相关文章

  1. SQL基础语法笔记教程整理

    PS:本文适用SQL Server2008语法. 一.关系型数据库和SQL 实际上准确的讲,SQL是一门语言,而不是一个数据库. 什么是SQL呢?简而言之,SQL就是维护和使用关系型数据库中的的数据的 ...

  2. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  3. SQL 基础语法笔记教程整理

    最近从图书馆借了本介绍 SQL 的书,打算复习一下基本语法,记录一下笔记,整理一下思路,以备日后复习之用. PS:本文适用 SQL Server2008 语法. 首先,附一个发现的 MySQL 读书笔 ...

  4. [python] Pythonic语法笔记

    Pythonic语法笔记 __new__ 在类实例化之前执行的,也就是在init之前执行,可以为这个类写操作.接受的参数不是self而是cls.只有在new方法里返回类才会执行init操作,需要返回父 ...

  5. python学习第五讲,python基础语法之函数语法,与Import导入模块.

    目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...

  6. Python编程从入门到实践笔记——函数

    Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...

  7. MySQL 储存过程-原理、语法、函数详细说明

    Mysql储存过程是一组为了完成特定功能的SQL语句集,经过编译之后存储在数据库中,当需要使用该组SQL语句时用户只需要通过指定储存过程的名字并给定参数就可以调用执行它了,简而言之就是一组已经写好的命 ...

  8. 《python基础教程(第二版)》学习笔记 函数(第6章)

    <python基础教程(第二版)>学习笔记 函数(第6章) 创建函数:def function_name(params):  block  return values 记录函数:def f ...

  9. openresty开发系列14--lua基础语法3函数

    openresty开发系列14--lua基础语法3函数 一)function (函数) 有名函数: optional_function_scope function function_name( ar ...

  10. JAVA基础语法:函数(方法)、类和对象(转载)

    4.JAVA基础语法:函数(方法).类和对象 函数 在java中函数也称为方法,是一段具备某种功能的可重用代码块. 一个函数包括这几部分: 函数头 函数头包括函数访问修饰符,函数返回值类型, 函数名, ...

随机推荐

  1. Go语言基础06 _function

    Go语言基础06 _function 函数在Go语言中是一等公民 与其他主要编程语言的差别 可以有多个返回值 所有参数都是值传递:slice,map,channel 会有传引用的 错觉 函数可以作为变 ...

  2. games101_Homework5

    使用光线追踪来渲染图像,实现两个部分:光线的生成和光线与三角的求交 你需要修改的函数是: • Renderer.cpp 中的 Render():这里你需要为每个像素生成一条对应的光 线,然后调用函数 ...

  3. Python计算1到100的加和

    print(sum(range(1,101))) print(sum([x for x in range(1,101)])) sum_value = 0 for i in range(1,101): ...

  4. 一文搞懂 ARM 64 系列: PACISB

    1 PAC AMR64提供了PAC(Pointer Authentication Code)机制. 所谓PAC,简单来说就是使用存储在芯片硬件上的「密钥」,一个「上下文」,与「指针地址」进行加密计算, ...

  5. OpenCV开发笔记(八十二):两图拼接使用渐进色蒙版场景过渡缝隙

    前言   对于图像拼接,前面探讨了通过基于Stitcher进行拼接过渡和基于特征点进行拼接过渡,这2个过渡的方式是摄像头拍摄角度和方向不应差距太大.  对于特定的场景,本身摄像头拍摄角度差距较大,拉伸 ...

  6. Flink CDC 实时同步 Oracle

    Flink CDC 系列文章 Flink CDC 实时同步 MySQL Flink CDC 实时同步 Oracle 准备工作 Oracle 数据库(version: 11g) 开启归档日志 sqlpl ...

  7. 做AI运动小程序有哪些解决方案,如何进行选型?

    引言:随着深度学习技术的发展进步,已经不再依赖强大的GPU算力,便可实现AI推理了,让AI技术渗透到了电脑.手机.智能设备等各类设备.体育.健身行业也不例外,阿里体育等IT大厂,推出的乐动力.天天跳绳 ...

  8. 29、undo_2_1(事务槽、延迟块清除、构造CR块、ora-01555)

    事务槽(不同于事务表里面的槽位(这个事务槽在数据块的头部)) 图解: 一个事务开始,要做的事情: 第一,事务表里面找槽位(undo段的段头块里有事务表,事务表有槽位,每一个槽位记录一个事务): 事务表 ...

  9. 【FAQ】Harmo【FAQ】HarmonyOS SDK 闭源开放能力 — 公共模块

    1.问题描述: 文档哪里能找到所有的权限查看该权限是用户级的还是系统级的. 解决方案: 您好,可以看一下下方链接是否可以解决问题: https://developer.huawei.com/consu ...

  10. 2013年ImportNew最受欢迎的10篇文章

    2013年即将过去,提前祝大家元旦快乐,ImportNew 整理出了本年度最受欢迎的前10篇Java和Android技术文章,每篇文章仅添加了摘要.如果您是我们的新访客,那下面这些文章不能错过.如果您 ...