原创作者: chinaxxren   阅读:2432次   评论:1条   更新时间:2012-11-12    
Go 语言中的内构函数,不需要任何引用



close new panic complex

closed make recover real

len append print image

cap copy println



close 和closed 用于channel通信和关闭channel



len 和cap 可用于不同的类型 len用于返回字符串、slice和数组的长度。



new 用于内存分配



make 用于内建类型map、slice、channel的内存分配



copy 用于复制slice、append 用于追加slice



panic 和recover 用于异常机制的处理。



print 和println 是底层打印函数。可以不引用fit包的qing'kuang'x情况下使用



complex real 和imag 全部用于处理复数。





Go集合 array 、slices 和map array 和 slices序列号都是从0开始的,所有计算也是如此。



array 由[n]<type> 定义,n表示array的长度。而<tpye>希望存储的内容的类型。数组的类型和大小是不能改变的。数组同样是值类型的。讲一个数组复制给另一个数组会复制整个数组的所有的元素。尤其是在向另一个数组传递的时候,它会获得一个数组的副本,而不是这个数组的指针。



声明一个数组 var a[3]int 如果不使用零来初始化它 则用复合声明 a: = [3]int {1,2,3} 也可以简写为 a := […]{1,2,3}。go语言会自动统计元素的个数。所有的项目必须都指定。



当声明一个array时,你必须在方括弧内输入些内容。数字或者三个点(…)



slice 与array接近。但是在新的元素假如的时候可以增加长度。slice总是指向底层的一个array。slice是一个指向array的指针,这是一个不同array的地方。slice是引用类型的。这意味着当赋值某个slice到另一个变量。两个引用会指向同一个array。



sl := make([]int ,10)

创建一个保存10个元素的slice。需要注意的是底层的array和slice并无不同。slice总是与一个固定的长度array成对的出现。其影响slice的容量和长度。



给定一个array或者slice,一个新的slice通过a[I:J]的方式创建。这会创建一个新的slice。指向a。从序列号I开始结束在序号J之前。长度为J-I。



a := […]int{1,2,3,4,5} //定义一个array 序列号从0到4;

s1 := a[2:4]  //从序列号2至3创建slice,它包含3,4;

s2 := a[1:5]  //从序列号1至4创建slice,它包含2,3,4, 5;

s3 := a[:] //从序号0至3创建,这是a[0:4]的简化写法,得到1,2,3,4;

s4 := a[:4] //这个是a[0:4]的简化写法。

s5 := a[:]  //从slice s2创建slice,注意这个s5任然指向array a。





函数append 向slice追加零值或者其他x值。并且返回追加后的新的、与s有相同类型的slice。如果s没有足够的容量存储追加的值,append分配一个足够大的,新的slice来存放原有的slice的元素和追加的值。因此返回的slice可能指向不同底层的array。



s0 := []int {0,0}



s1 := append(s0,2)  //追加一个元素,s1 == []int{0,0,2};



s2 := append(s1,3,5,7)  //追加多个元素,s2 ==[]int{0,0,2,3,5,7}



s3 := append(s2,s0…) //追加一个slice s3 = []int{0,0,2,3,5,7,0,0} 注意这三个点



函数copy从源slice scr复制元素到目标dot,并且返回复制的元素的个数。源和目标可能重叠。复制的数量是len(src)和len(dst)中最小的值。



var a = […]int{0,1,2,3,4,5,6,7}



var s = make([]int 6)



n1 := copy(s,a[0:]) // n1 == 6,s == []int{0,1,2,3,4,5}



n2 := copy(s,s[2:]) // n2 == 4,s == []int{2,3,4,5}





map 可以认为使用ige用字符串做索引的数组(在其简单的形势下)



monthdays := map[string]ing {

"Jan":31,"Feb":28,"Mar""31,

"Apr""30,"May":31,Jun:30, //注意结尾必须是逗号。

}



向map增加元素



monthdays["Oct"] = 31 //添加一个元素

monthdays["Feb"] = 29 闰年重写这个元素





检查这个元素是否存在



var value int



var present bool



value , présent = monthdays["Jan"] //如果存在,present则有值返回true



v,ok := monthdays["Jan"] //"逗号ok标准形式,go语言方式"



从map移除元素

monthdays["Mar"] = 0,false
评论 共 1 条 请登录后发表评论
1 楼 09108082 2013-01-18 17:49
可能是因为版本的原因吧,我使用monthdays["Mar"]=0,false不能编译通过,现在使用的是delete(monthdays,"Mar"),因为go语言还在改进中,要及时更新喔

发表评论

您还没有登录,请您登录后再发表评论

文章信息

  • Adela_09在2012-11-12创建
  • Adela_09在2012-11-12更新
  • 标签: golang, go语言, go
Global site tag (gtag.js) - Google Analytics