go语言题及答案 go语言基础知识

3.5 Go语言中将函数作为值使用

在匿名函数中,我们已经见过这种形式,即将匿名函数体整体赋值给某个变量,此时该变量就相当于这个函数,Python中也有类似的表达方式。

创新互联服务项目包括多伦网站建设、多伦网站制作、多伦网页制作以及多伦网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,多伦网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到多伦省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

通过程序的输出,我们能够观察到:

最后请大家思考,如果匿名函数执行了,程序还能正常运行吗?

答案很显然是不行的,你看看到这样的错误./test_function_values.go:8:3: (func literal)() used as value,这里面有两个问题:

我们尝试修复一下这个问题,我们做了以下修改:

再次运行,有以下显著变化:

既然能赋值给变量,也能在map中使用,在下面的例子中,我们就将函数体赋值给map中的值,我们来分析下面的例子:

对于输出结果,我们有以下结论:

由于函数可以作为值,所以很容易作为参数传给函数。这里来看一个简单的示例:

我们来分析一下上面的代码

go语言的出现非常奇怪,有几个问题请高手答案一下~~~~??

1:go与c语言相比,go有垃圾回收,不会造成内存泄露问题,go的语法简洁优美,同样的c++100行代码go大概50行可以做到,go的目标是能做C++能做的事,虽然目前可能不太实际

2:go的并行机制并不是一般的线程,通过channel和goroutine来实现,比线程还要轻量级很多,所以go适合高并发的服务器端

3:go是系统级别的语言,相当于c语言,java c#都是算比较高级的语言,这个不太好比,效率的话目前确实是要高一些,而且不需要外部依赖,所以go还是很强大的

利用go语言实现求数组交集的算法

题目: 给定两个数组,编写一个函数来计算它们的交集.(来自 leecode(349) )

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4]

说明:

我的解法:

题目同上,只不过在输出的时候

输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4]

解法

如果给定的数组是排好序的,

arr1 = [1,2,3,4,4,13],arr2 = [1,2,3,9,10]

那这个返回值该如何获取得两个数组的交集呢?

解法

golang 100题中的问题但是只有答案,想知道为什么。

只把最终的函数放到defer栈中,因此

defer s.Add(1).Add(2) 等价于下面2句了

s..Add(1)

defer s.Add(2)

你可以试试

defer s.Add(2).Add(1).Add(4)

s.Add(3)

看看执行的结果是不是 2134


文章标题:go语言题及答案 go语言基础知识
URL链接:http://myzitong.com/article/ddehhdg.html