go 复习基础 func

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/enjoy_sun_moon/article/details/84922826
第一 string()类型转换
s := "abc"
bt := byte(e)//
//fmt.Println(bt)//报错  没有此种转换方法
bt := []byte(s)    
fmt.Println(bt)  //[97 98 99]  将字符串按照找字节码的形式组成数组
bt[1] = 's' 
fmt.Println(bt)  //[97 115 99]
s := string(bt)
fmt.Println(s)   //asc
第二  不定参数
//传入切片   如果不加三个点  报错: cannot use []int literal (type []int) as type int in argument to Addsum加上三个点后 就能把切片中的元素取出来 然后放到函数中  
//在传到函数中之后会再把这些参数绑在一块组成一个切片
fmt.Println(Addsum([]int{2,3,4,5,66,6}...))
//不定参数  返回一个参数
func Addsum(num ...int)(sum int) {
	fmt.Printf("%T\n",num)  //  []int
	fmt.Printf("%D\n",num)  //  []int
	for _,value := range num {
		sum+=value
	}
	return
}
//不定参数  返回多个参数
func Addsum2(num ...float64) (sum , avg float64 , count int) {
	for _,value := range num {
		sum+=value
		count++
	}
	avg = sum/float64(count)  //sum是float64  count是int  将count转换成float 然后得到的结果是  float64类型
	return
}

slice和map声明之后没有初始化这时叫做零值,并且slice和map一样都不能与自身相同的数据类型作比较,他们两个本身只能与nil比较,slice和map在零值等于nil时它的长度和容量都是0,但是也有非nil的slice的长度和容量是0,例如:[]int{},因此判断slice是否为空可以使用len(s)==0,而不是s!=nil,因为就算是s!=nil那么slice的长度还是有可能为0还是为空,所以没用,例如上面刚写的[]int{},但是使用len(s)==0那么这个slice要么值是nil也就是未初始化,要么值是空也就是初始化了但是没有添加值 就都是0。map也一样 使用len(m) == 0

声明了map和slice 如果没有初始化那么使用这个map和slice的时候还要make一下,因为只声明的话没有分配到内存,不能使用的。

make(map[int]string)    len(map)                                 map

make([]int,0)                 len(arr)    append(arr,1)         slice 

这是map和slice的区别

//map的声明  
//1:关键字map声明  没有初始化也没有分配内存 不能写值 所以==nil  声明后在使用时要么声明是初始化  要么使用make()分配内存
var map1 map[string]string
fmt.Printf("%T,%v,len(m)=%d,m==nil?%v\n",map1,map1,len(map1),map1==nil) 
// map[string]string,map[],len(m)=0,m==nil?true
// 2.make()函数声明  没有初始化但是分配了内存  可以直接往里面写值  !=nil
map2 := make(map[string]string)
fmt.Printf("%T,%v,len(m)=%d,m==nil?%v\n",map2,map2,len(map2),map2==nil) 
// map[string]string,map[],len(m)=0,m==nil?false\
map3 := map[string]string{}
fmt.Printf("%T,%v,len(m)=%d,m==nil?%v\n",map3,map3,len(map3),map3==nil) 
//map[string]string,map[],len(m)=0,m==nil?false
map3["name"] = "聂伟博"
fmt.Println(map3)
//map[name:聂伟博]
// 声明切片
// var 关键字声明
var a []int
fmt.Printf("%T,%v,len(a)=%d,a==nil?%v\n",a,a,len(a),a==nil) 
// []int,[],len(a)=0,a==nil?true
fmt.Println(a)
// []in  空
// a[0] = 1
// 和map一样的报错


// make 关键字声明
a1 := make([]int,1)
fmt.Printf("%T,%v,len(a1)=%d,a1==nil?%v\n",a1,a1,len(a1),a1==nil) 
// []int,[],len(a1)=0,a1==nil?false
fmt.Println(a1)
// [0]
a1[0] = 1
fmt.Println(a1)

猜你喜欢

转载自blog.csdn.net/enjoy_sun_moon/article/details/84922826
今日推荐