• 函数

    • 返回值带有变量名

      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. Taylor series Explicit Euler Implicit Euler

    1 Taylor series \[\begin{gathered}\sum_{n=0}^{\infty}\frac{f^{(n)}\left(a\right)}{n!}\left(x-a\right ...

  2. 2024-10-30:或值至少 K 的最短子数组 I。用go语言,给定一个非负整数数组 nums 和一个整数 k,我们需要判断数组中是否存在一个最短的非空子数组,使得该子数组所有元素的按位或(OR)运

    2024-10-30:或值至少 K 的最短子数组 I.用go语言,给定一个非负整数数组 nums 和一个整数 k,我们需要判断数组中是否存在一个最短的非空子数组,使得该子数组所有元素的按位或(OR)运 ...

  3. 2.5 使用U盘安装Linux系统

    前面章节介绍了如何通过虚拟机 VMware 安装 Linux 系统,而实际开发中,我们更多的是要将 Linux 系统直接安装到电脑上. 直接在电脑上安装 Linux 系统的常用方法有 2 种,分别是用 ...

  4. iptables防火墙规则介绍与配置

    防火墙简单介绍 防火墙根据什么对外网的进出数据流进行控制? 源IP.目标IP.源端口号.目标端口号.协议.指针位(SYN.FIN.ACK.RST).状态(NEW.ESTABLISHED.INVIAD) ...

  5. 一文讲透 FPGA CDC 多bit跨时钟域同步-hand-shanking机制

    一.背景 数据的跨时钟域处理是FPGA开发过程中的常见问题,存在两种情况 慢时钟向快时钟同步:只需在快时钟域打两拍即可.其RTL如下: 打拍同步的原理:大家在初学FPGA时,经常听过FPGA中对信号打 ...

  6. CSP2023 游寄

    CSP2023 游寄 没错,又寄. day -n 停课集训,天天打联测模拟赛,人麻了. day -n 请假回家了,人更麻了. 和姐姐拥抱了. 差点睡过头,天天下大雨,悲. 我妈和亲戚出去了,和哥在家通 ...

  7. Docker容器使用问题:Failed to get D-Bus connection: Operation not permitted

    原因是dbus-daemon没能启动.其实systemctl并不是不可以使用.将你的CMD或者entrypoint设置为/usr/sbin/init即可.如: docker run --privile ...

  8. 看不懂来打我,Vue3的watch是如何实现监听的?

    前言 watch这个API大家都很熟悉,今天这篇文章欧阳来带你搞清楚Vue3的watch是如何实现对响应式数据进行监听的.注:本文使用的Vue版本为3.5.13. 关注公众号:[前端欧阳],给自己一个 ...

  9. 基于ESP32的桌面小屏幕实战[4]:硬件设计之PCB Layout

    1. PCB Layout 步骤 生成PCB 确定PCB layout规范 绘制板框尺寸 布局 布局规范: 按电气性能合理分区,一般分为:数字电路区(即怕干扰.又产生干扰).模拟电路区(怕干扰).功率 ...

  10. 腾讯云对象存储 COS 荣获对象存储领导力奖!!!

    亚太内容分发大会暨 CDN 峰会一直致力于推动 CDN 产业深度融合发展和市场普及,现已成为亚太地区影响力最大的内容分发网络盛会. 十年来,在以腾讯云.阿里云.网宿科技等亚太 CDN 产业联盟成员孜孜 ...