在golang编程中总结的基础语法及常见的问题
写下,自己在用golang开发中,用到的东西,有啥写啥。 今个就写下golang中的控制语句 if else、for、switch、goto,这几个方面。 if 判断对比 package main import "fmt" func main(){ fmt.Printf("hello worldn") if a:=5;a>2 { fmt.Printf("a >2") }else { fmt.Printf("a<2") } } for 循环 这里可以直接赋值 for i,j := 1,10; i < j; i,j=i+1,j+1 { //死循环 fmt.Println(i) } 完整的例子 package main import "fmt" func main(){ fmt.Printf("hello worldn") if a:=5;a>2 { fmt.Printf("a >2") }else { fmt.Printf("a<2") } stra:="111" for i:=0; i< len(stra); i++ { fmt.Println(i) } } 如果想实现死循环,很简单,直接 for{ go rui() } 这里在看看switch的用法,学过语言的人都知道的。 package main import "fmt" func main(){ fmt.Printf("hello worldn") if a:=5;a>2 { fmt.Printf("a >2") } else { fmt.Printf("a<2") } stra:="111" for i:=0; i< len(stra); i++ { fmt.Println(i) } //这里是switch ch:="unix" var cl string switch ch { case "mac": cl = "mac" case "linux": cl = "linux" case "unix": cl= "unix" } fmt.Println(cl) } 对于判断是可以写更复杂的 用if实现: kk := 0 bb := 9 if 0 <= kk && bb <= 9 { fmt.Println("zhenghao") } 用switch实现 oo := 11 switch { case 0<3 && oo <= 9: fmt.Println("and") case (1 <= 0 && 2 <= 2) || ('A' <= 'A' && 'Z' <= 'Z'): fmt.Println("fei") default: cl = "Other Char" } 还有一个goto,是个在自定义标签中跳转用的 func good(){ i := 0 xiaorui: //同其它语言也是以冒号结束作为标签 println(i) i++ goto xiaorui //跳转到xiaorui去 } 数组其实用的不多,这里就一笔带过,貌似更多的人在用切片slices var a [5]int fmt.Println("emp:",a) a[4] = 100 fmt.Println("set:",a) fmt.Println("get:",a[4]) fmt.Println("len:",len(a)) slice是一个指针而不是值。 slice就是“动态的数组”,传值的时候他也是拷贝赋值,只是他拷贝的是内存地址,是传递指针的。slice总是指向一个底层的array,slice声明也像array一样,只是不需要长度。 切片中有两个概念:一是len长度,二是cap容量,长度是指已经被赋过值的最大下标+1,可通过内置函数len()获得。容量是指切片目前可容纳的最多元素个数,可通过内置函数cap()获得。切片是引用类型,因此在当传递切片时将引用同一指针,修改值将会影响其他的对象。
a := []int{1,2,3,4,5} s1 := a[2:5] s2 := a[1:3] fmt.Println(s1,s2) s2 = append(s2,1,5) s1[0] = 9 fmt.Println(s1,11,22,33) fmt.Println(s2) aa := []string{"aa","bb","xiaorui.cc"} aa = append(aa,"this is rfyiamcool.blog.51cto.com") fmt.Println(aa) map结构也经常常用,它和python中的dict 几乎一模一样,是一个key-value的hash结构。key可以是除了func类型,array,slice,map类型之外的类型。 它的使用也是非常简单 m:=map[string]string{} m["key1"] = "val1" map结构和slice是一样的,是一个指针。赋值的时候是将指针复制给新的变量 map的增删改查操作是这样的: package main import( "fmt" ) func main() { m := map[string]string{"key1":"val1"} fmt.Println(m) m["key2"] = "val2" fmt.Println(m) p := m["key1"] fmt.Println(p) delete(m,"key1") fmt.Println(m) } 今天就这样了,有时间再写 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |