The way go to go的六章总结

函数(function)

介绍
Go语言是编译型语言,编译成机器语言,优点是执行速度快。(C语言)
Java是解释性语言,先编译成class文件,然后根据不同的操作系统再进行解释。

函数参数,返回值以及返回值的类型被称为函数签名;

Go中不允许函数重载;(重载需要类型匹配影响性能;这样的话,只需要函数调度)

函数可以相互比较(前提是引用的是相同函数或者nil);但是不能嵌套(解决方案是会用匿名函数)

Go没有泛式,最好是为每一个类型单独创建一个函数,这样代码可读性更强。(也是处于性能的考虑)

函数参数与返回值

  1. 引用传递和值传递跟Java一样
  2. return 或者return var都是可以的,前者就体现了Go语言的高效(毕竟已经指明了返回值,就不用在这里再写一次了)
  3. 尽量使用命名返回值(这种机制才做出来很让人烦恼,毕竟不推荐但是有,总会有人图省事的)

传递变长参数
三种形式处理:

  1. …type
  2. 使用结构
  3. 使用空接口
    (这种变长参数大概是因为没有重载这种机制,为了弥补而出现的)

defer和追踪

  1. defer允许我们推迟到函数返回之前来执行某个操作(类似于java的finally 用于释放某些资源)多个defer会逆序执行
  2. 第二个功能是追踪
    我觉得第一个功能只能说是方便了编程人员的工作,第二个追踪在我看来更加实用。

内置函数
递归函数

  1. 问题一是栈空间溢出,可以用懒惰求值解决 在Go语言中使用管道和goroutine
  2. 注意 多个函数之间互相调用,形成的闭环问题

将函数作为参数
闭包

  1. 匿名函数,不能独立存在 要么 赋值于某个变量,要么直接调用
  2. 匿名函数也叫做闭包,闭包可以使得某个函数捕捉到一些外部状态

应用闭包:将函数作为返回值

  1. 刚好昨天看了JS的闭包,都是一样的东西,设置一个私有区域的值。
    闭包函数保存并积累其中的变量的值,不管外部函数退出与否,都能继续操作外部函数中的局部变量。
  2. 高阶函数,有点高数的意思,我们把函数看成一个值,值嵌套一个值那样的话不就是高阶的意思吗,就叫做高阶函数。

使用闭包调试
这个很有用,就是很多包内的函数在执行,你想知道那个函数执行了或者执行的顺序等,可以用闭包来统计数值(调用的顺序),通过runtime或log包中的特殊函数来实现这样的功能。

计算函数执行的时间
利用time包中的Now()和Sub()函数
这节好无聊啊

通过内存缓存来提升性能
这个就是通过存储出现过得值来提升运算效率啊。算法中的东西。
适合那些大量计算,其中包含很多重复结果的例子。

Java转Go语言 -4相关推荐

  1. java 全局变量_Java语言与C语言、C++语言有何差异以及优劣势

    差异 熟悉C语言和C++语言的读者一定想搞清楚这个问题,实际上,Java确实是从C语言和C++语言继承了许多成分,甚至可以将Java看成是类C语言发展和衍生的产物.比如Java语言的变量声明.操作符的 ...

  2. arduino与java,Arduino具有与Java和C语言类似的IDE集成开发环境和图形化编程环境

    Arduino具有与Java和C语言类似的IDE集成开发环境和图形化编程环境 更多相关问题 听力原文:W: Hi, Steve, good to see you are up and around a ...

  3. JAVA调用R语言之Rserve(二)

    之前,我写了一篇文章是java调用R语言之Rserve,但我发现那种方法比较麻烦.后来我发现了一个比较方便的方法,所以今天从又写了一篇博客,来简单说说. 这次我们需要写一个简单的R语言脚本,然后通过运 ...

  4. atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97

    atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参 ...

  5. 【Groovy】Groovy 语言特点简介 ( 支持 Java 语法 | 支持 Java 虚拟机 | Groovy 语言是动态语言 | Groovy 扩展 JDK | 编译时元编程 )

    文章目录 一.Groovy 支持 Java 语法 二.Groovy 支持 Java 虚拟机 三.Groovy 语言是 动态语言 四.Groovy 扩展 JDK 五.Groovy 编译时元编程 一.Gr ...

  6. 人工智能用python还是java_学会java和python语言,可以开始搞人工智能吗?

    作为一名软件开发工程师,个人认为,当你学会Java和Phthon语言使用后,不建议你直接上手人工智能.下面我来说一下个人看法: 人工智能领域门槛较高 人工智能对于一般同学而言,其入门门槛相对较高,你虽 ...

  7. 学完java学swift_前言最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C、Java或其他语言实现的,几乎没有使用Swift实...

    前言 最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C.Java或其他语言实现的,几乎没有使用Swift实现的,所以自己打算使用Swift去实现一 ...

  8. java接收c语言的结构体

    java接收c语言的结构体 DataInputStream inputStream = new DataInputStream(s.getInputStream()); int read = 0; i ...

  9. mysql解释器_atitit.java解析sql语言解析器解释器的实现

    atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...

  10. 好程序员Java分享SQL语言之索引

    好程序员Java分享SQL语言之索引,前言:本章我们将学习MySQL中的索引,本文将从索引的作用.索引的分类.创建索引的语法.索引的使用策略以及索引的实现原理等方面带大家了解索引. 索引的作用 索引的 ...

最新文章

  1. 7.12 其他面向对象设计原则3: 依赖倒置原则DIP
  2. CowNew开源团队新书《自己动手写开发工具》隆重上市
  3. access订单明细表怎么做_成本明细表
  4. feachall php_timthumb.php详解
  5. 机器学习理论《统计学习方法》学习笔记:第四章 朴素贝叶斯法
  6. php程序yii是什么意思,Yii框架啥意思
  7. 唐骏《我的成功也可以复制》1,盖婚房
  8. 玩转git-flow工作流-分支解析
  9. VS2015 IIS Express 无法启动 解决办法(转)
  10. magent + memcached部署过程
  11. 【Python】hashlib模块实现MD5加密
  12. mysql数据库作业_mysql数据库操作练习
  13. 如何恢复丢失的分区及文件
  14. antd 实现pdf 预览_react 的pdf预览插件应用
  15. QT调用巴斯勒相机的使用
  16. 科技论文计算机排版格式,科技论文排版参考格式
  17. 解密Excel文件打开密码
  18. Android串口开发
  19. android系统开机logo定制
  20. 第十七届全国大学智能车竞赛赛场合影集锦

热门文章

  1. 【笔记分享】H桥电机正反转
  2. 【Qt】Q_INIT_RESOURCE的使用
  3. boost库做什么用呢?
  4. java窗体中添加图片_在java窗体程序中添加图片的方法
  5. 校园无线网登陆成功,但打开浏览器不能上网怎么办?标签上显示注销页怎么办?
  6. uni-app 微信支付
  7. emmc linux 识别分区_Linux和Uboot下eMMC boot分区读写
  8. irqbalance机制分析
  9. MQTT网关连接华为云物联网平台应用
  10. 445端口的用处和禁用