• 函数

    • 返回值带有变量名

      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. Re:从零开始的pwn学习(栈溢出篇)

    写在前面:本文旨在帮助刚接触pwn题的小伙伴少走一些弯路,快速上手pwn题,内容较为基础,大佬轻喷.本文默认读者明白最基础的汇编指令的含义,并且已经配置好linux64位环境,明白基础的Linux指令 ...

  2. MIT 6.002 Circuits and Electronics by Prof. Anant Agarwal

    官网:MIT 2007 Circuits and Electronics 参考资料,课程讲义,课程PPT. 国内的电路像石群老师,罗先觉老师,讲的很细致,也许跟教材有关系,像电阻串并联的等效电阻就用了 ...

  3. [Go] 如何妥善处理 TCP 代理中连接的关闭

    如何妥善处理 TCP 代理中连接的关闭 相比较于直接关闭 TCP 连接,只关闭 TCP 连接读写使用单工连接的场景较少,但通用的 TCP 代理也需要考虑这部分场景. 背景 今天在看老代码的时候,发现一 ...

  4. 使用ob_tools包收集分析oceanbase数据库oracle租户缓慢sql语句

    概述 1.手册目的: 本手册旨在提供一种系统化的方法论,以便发现和分析慢SQL语句.通过使用ob_tools包,收集和分析在交付期间,应用程序在不同场景下进行压测时所产生的慢SQL语句,从而实现性能调 ...

  5. .NET LINQ分析AWS ELB日志

    前言 小明是个单纯的.NET开发,一天大哥叫住他,安排了一项任务: "小明,分析一下我们超牛逼网站上个月的所有AWS ELB流量日志,这些日志保存在AWS S3上,你分析下,看哪个API的响 ...

  6. excel/xlsx 空值判断NaN

    从numpy导入nan类型,以此判断NaN类型

  7. 轻量虚拟机之Multipass

    官网:https://multipass.run/ 它可以快速在电脑上快速搭建一个轻量级的虚拟机,并且相比于 Vmware 更加轻量,只需一行命令快速创建 Ubuntu 虚拟机. Multipass  ...

  8. python之日志记录loguru

    安装: pip install loguru 基础使用: from loguru import logger logger.debug("This is a debug...") ...

  9. 如何在原生鸿蒙中进行RN的断点调试

    方式一  chrome devtools的方式 第一步:metro的方式加载bundle 先设置好原生这边的代码,然后记得打开RN服务器. 注意这个enableDebugger的值一定要设置为true ...

  10. geocodeCN:一个批量将地址转为地理坐标的插件

    目录 1. 介绍 2. 使用步骤: 2.1 安装 2.2 配置 2.3 坐标匹配 2.4 生成图层 2.5 导出为CSV 3. 说明 1. 介绍 这是一个QGIS插件,主要用于批量地理编码,即将地址转 ...