golang中一些基础用法
来源:互联网 发布:热传导 数值模拟软件 编辑:程序博客网 时间:2024/05/21 08:51
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,%c\n", 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, 999fmt.Println(array)// 确认修改有效,输出 [0, 999, 999]。}array[i] = v + 100 // 使用用复制品中取出的 value 修改原数组。}fmt.Println(array) // 输出 [100, 101, 102]。//slice 为引用,对slice引用修改时直接在原来slice上进行修改,不用进行复制,建议改用用引用用类型,其底层数据不会被复制。slice := []int{0, 1, 2}for i, v := range slice {if i == 0 {// 在修改前,我们先修改原数组。slice[1], slice[2] = 999, 999fmt.Println(slice)// 确认修改有效,输出 [0, 999, 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 <- 1b <- 2go 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, 0);">type FormatFunc func(s string, x, y int) string// 定义函数类型。func format(fn FormatFunc, s string, x, y int) string {return fn(s, x, y)}</span>func main() {s1 := test(func() int { return 100 })// 直接将匿名函数当参数。s2 := format(func(s string, x, y int) string {return fmt.Sprintf(s, x, y)}, "%d, %d", 10, 20)println(s1, s2)}
0 0
- golang中一些基础用法
- golang channal中buf和for range一些用法
- golang 中fmt用法
- golang 中fmt用法
- golang中bytes包用法
- golang 中unicode包用法
- golang 中regexp包用法
- golang 中strconv包用法
- golang中strings包用法
- golang中time包用法
- golang中sort包用法
- golang中os包用法
- golang中image包用法
- golang 中 reflect 简单用法
- golang中net包用法
- golang中time包用法
- golang中sort包用法
- golang 中regexp包用法
- 位置区、路由区和UMTS登记区
- 在VMware和iSCSI阵列上关闭延迟确认
- 《数据结构》复习笔记--二叉树1
- BJFU 1009——抽奖
- 为golang程序使用pprof远程查看httpserver运行堆栈,cpu耗时等信息
- golang中一些基础用法
- 关于几种编码详解(Unicode,UTF-8,GB系列)
- golang中container/ring包用法
- 求字符串的长度 的其他方法
- golang中container/heap包用法
- golang中archive/zip包用法
- golang中archive/tar包用法
- log4j三种输出方式
- Golang的GC信息