写下,自己在用golang开发中,用到的东西,有啥写啥。
今个就写下golang中的控制语句 if else、for、switch、goto,这几个方面。
if 判断对比
package main
import "fmt"
func main(){
fmt.Printf("hello world\n")
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 world\n")
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 world\n")
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, 2, 2, 3, 3, 4, 5)
s1[0] = 9
fmt.Println(s1, s2)
s2 = append(s2,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)
}今天就这样了,有时间再写