08 2013 档案
摘要:数组切片slice这个东西看起来很美好,真正用起来会发现有诸多的不爽。第一,数组、数组切片混淆不清,使用方式完全一样,有时候一些特性又完全不一样,搞不清原理很容易误使用。第二,数组切片的append操作,每次对slice append操作,都返回一个新的slice的引用,对slice的引用没法保持,这样在函数传递slice的情况下append,在调用函数的上下文中看不到slice append的效果。如果想要这种方式凑效,不得不另辟蹊径。本文主要说一下如何解决这个窘境的方法。函数传递slice存在什么问题?func sliceModify(slice []int) { // slice[...
阅读全文
摘要:1.使用方式数组和slice长的很像,操作方式也都差不多,并且slice包含了数组的基本的操作方式,如下标、range循环,还有一些如len()则是多种类型共用,所以根据操作根本搞不清数组和切片的区别,能够看出区别的地方主要看如何声明的。数组的声明方式很单一,通常就是下面这样:array1 := [5]int{1, 2, 3, 4, 5}array2 := [5]int{}slice的声明方式就非常多样了,如前面介绍的几种:var slice1 = []int{1, 2, 3, 4, 5}var slice2 = make([]int, 0, 5)var slice3 = make([]int
阅读全文
摘要:初看go语言中的slice,觉得是可变数组的一种很不错的实现,直接在语言语法的层面支持,操作方面比起java中的ArrayList方便了许多。但是在使用了一段时间后,觉得这东西埋的坑不少,使用方式上和arrayList也有很大的不同,在使用时要格外注意。slice的数据结构首先说一下slice的数据结构,源码可以在google code上找到,http://code.google.com/p/go/source/browse/src/pkg/runtime/runtime.hstruct Slice{ byte* array; /...
阅读全文
摘要:链表的数据结构比较线性数组,优点是 可以方便的对任意的位置进行插入和删除。这一特性使得它很适合于应用在排序等场景下,由于golang目前类库还不是很完善,在java中可以很简单的使用api提供的支持完成对list或者map的排序,在使用go时就没有那么幸运了,可能需要自己去实现。下面的例子就是使用go package 中的LinkedList实现的排序的链表。有几个功能特性:1.支持固定的长度2.可自定义排序的规则3.组合LinkedList功能package codeforfunimport ( "container/list")type SortedLinkedList
阅读全文
摘要:尝试众多golang的ide,最后发现intellij目前做的完成度最高eclipse go 不能进行包、类、方法等的跳转,这点是无法忍受的,所以果断换成intellij但是发现在intellij里面不能import$GOPATH里src下的包,网上搜索了很长时间, 在这里找到解决方法:https://github.com/mtoader/google-go-lang-idea-plugin/issues/224Looking through the source, it seems that the plugin doesn't use the $GOPATH (to be fair
阅读全文
摘要:作为比较老牌的面向对象的编程语言java,在对函数式编程的支持上一直不温不火。认为面向对象式编程就应该纯粹的面向对象,于是经常看到这样的写法:如果你想写一个方法,那么就必须把它放到一个类里面,然后new出来对象,对象调用这个方法。这种方式在函数式编程语言看来太死板,没有必要在对待多种编程范式上采取非此即彼的做法。如今比较现代的编程语言也都是多编程范式的支持,不再去对一种编程范式固守一隅,一种语言可能会同时具有面向对象、函数式、元编程等多种特性,这方面java的后来者C#都走在她的前面。终于在jdk8里发现了lambda表达式的影子,java也开始加入这种函数式编程特性,java码农们终于在之前
阅读全文
摘要:1.返回值使用通道func main() { // 生成随机数作为一个服务 randService := randGenerator() // 从服务中读取随机数并打印 fmt.Printf("%d\n",<-randService)}func randGenerator() chan int { // 创建通道 out := make(chan int) // 创建协程 go func() { for { //向通道内写入数据,如果无人读取会等待 out <- rand.Int() ...
阅读全文

浙公网安备 33010602011771号