博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在golang编程中总结的基础语法及常见的问题
阅读量:6743 次
发布时间:2019-06-25

本文共 2643 字,大约阅读时间需要 8 分钟。

写下,自己在用golang开发中,用到的东西,有啥写啥。

今个就写下golang中的控制语句  if  else、for、switch、goto,这几个方面。

if 判断对比

package mainimport "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 mainimport "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 mainimport "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 := 0bb := 9if 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] = 9fmt.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 mainimport(    "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)}

今天就这样了,有时间再写

转载地址:http://tpkho.baihongyu.com/

你可能感兴趣的文章
C#里的SubString和Convert.ToDateTime
查看>>
find the longest of the shortest (hdu 1595 SPFA+枚举)
查看>>
Android手机输入法按键监听-dispatchKeyEvent
查看>>
sparkSQL1.1入门之十:总结
查看>>
JSON以及Java转换JSON的方法(前后端常用处理方法)
查看>>
bzoj4069【APIO2015】巴厘岛的雕塑
查看>>
数据库架构的演变
查看>>
策略模式
查看>>
bzoj2115【WC2001】Xor
查看>>
【搞机】Apple Pencil 开箱
查看>>
Protobuf语言指南
查看>>
Netlink通信机制【转】
查看>>
Java打印M图形(二维数组)——(九)
查看>>
BZOJ4962 : 简单的字符串
查看>>
Objective-C编码规范[译]
查看>>
谷哥的小弟学前端(10)——JavaScript基础知识(1)
查看>>
关于websocket集群中不同服务器的用户间通讯问题
查看>>
hadoop环境搭建与測试
查看>>
ORACLE实际执行计划与预估执行计划不一致性能优化案例
查看>>
基于jq的表单填充
查看>>