GO快速入门三
array&slice(数组&切片)
array和其他的数组一样,slice大概就类似于STL中的vector
```
package main
import "fmt"
func main(){
var a [6]int
fmt.Println(a)
s := make([]int,6,10)
s = append(s,1)
fmt.Println(s)
fmt.Println("len(a)",":",len(a))
fmt.Println("cap(a)",":",cap(a))
fmt.Println("len(s)",":",len(s))
fmt.Println("cap(s)",":",cap(s))
for i,v := range s{
fmt.Println(i,v)
}
}
```
结果:
[0 0 0 0 0 0]
[0 0 0 0 0 0 1]
len(a) : 6
cap(a) : 6
len(s) : 7
cap(s) : 10
0 0
1 0
2 0
3 0
4 0
5 0
6 1
array是值类型,slice是引用类型 使用make创建引用类型,所有s就是slice slice的cap是只slice的容量,len是元素个数,len(s)<=cap(s) 使用append,在slice后面追加元素 使用range可以进行遍历
函数多值返回
package main
import "fmt"
import "errors"
func main(){
if _,err:=cacl(0,1);err==nil{
fmt.Println(cacl(0,1))
}
if _,err:=cacl(1,2);err==nil{
fmt.Println(cacl(1,2))
}
}
func cacl(x float64,y float64)(float64,error){
if x==0{
return 0,errors.New("Invalid param.")
}
return x/y,nil
}
结果:0.5 <nil>
函数可返回多个值 通常会有个error,用于返回判断 “_” 可用于接不需要使用的变量
defer
package main
import "fmt"
func main(){
defer func(){
fmt.Println("Good bye.")
}()
fmt.Println("Good boy.")
}
defer在执行所有之后执行,常用于用完需要最后处理掉的资源,如文件在打开之后一直使用,退出前需要关闭文件句柄。 代码中的func(),其实是匿名函数,用处很大,此处就不展开了。