加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang中一些基础用法

发布时间:2020-12-16 18:31:19 所属栏目:大数据 来源:网络整理
导读:range类似迭代器操作,返回 (索引,值) 或 (键,值)。其可以使用的对象包括string,array/slice,map,channel。其中string,array/slice返回的第一个value都是index,第二个value表示值;map返回第一个元素为key,第二个为value;channel中第一个值为元素的值。 举

range类似迭代器操作,返回 (索引,值) 或 (键,值)。其可以使用的对象包括string,array/slice,map,channel。其中string,array/slice返回的第一个value都是index,第二个value表示值;map返回第一个元素为key,第二个为value;channel中第一个值为元素的值。

举例如下:

func main() {
	str := "abcdef"
	for key,value := range str {
		fmt.Printf("%d,%cn",key,value)
	}

       array := [3]int{0,1,2}//注意,针对array,range 会复制对象。
	for i,v := range array {
		if i == 0 {
			// index、value 都是从复制品中取出。
			// 在修改前,我们先修改原数组。
			array[1],array[2] = 999,999
			fmt.Println(array)
			// 确认修改有效,输出 [0,999,999]。
		}
		array[i] = v + 100 // 使用用复制品中取出的 value 修改原数组。

	}
	fmt.Println(array) // 输出 [100,101,102]。

	//slice 为引用,对slice引用修改时直接在原来slice上进行修改,不用进行复制,建议改用用引用用类型,其底层数据不会被复制。
	slice := []int{0,2}
	for i,v := range slice {
		if i == 0 {
			// 在修改前,我们先修改原数组。
			slice[1],slice[2] = 999,999
			fmt.Println(slice)
			// 确认修改有效,999]。
		}
		slice[i] = v + 100
	}
	fmt.Println(slice) // 输出 [100 1099 1099]。

	a := make(map[int]string,3)
	a[1] = "as"
	a[2] = "c"
	for key,value := range a {
		fmt.Println(key,value)
	}
	b := make(chan int,3)
	b <- 1
	b <- 2
	go func() {
		for element:= range b {
			fmt.Println(element)
		}
	}()
	time.Sleep(1 * time.Second)
}

函数:

函数定义
不支支持 嵌套 (nested)、重载 (overload) 和 默认参数 (default parameter)。
? 无无需声明原型。
? 支支持不定?长变参。
? 支支持多返回值。
? 支支持命名返回参数。
? 支支持匿名函数和闭包。


函数是第一一类对象,可作为参数传递。建议将复杂签名定义为函数类型,以便于阅读。

func test(fn func() int) int {
return fn()
}
<span style="background-color: rgb(255,0);">type FormatFunc func(s string,x,y int) string
// 定义函数类型。
func format(fn FormatFunc,s string,y int) string {
return fn(s,y)
}</span>
func main() {
s1 := test(func() int { return 100 })
// 直接将匿名函数当参数。
s2 := format(func(s string,y int) string {
return fmt.Sprintf(s,y)
},"%d,%d",10,20)
println(s1,s2)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读