• golang运算与循环等


    一、golang运算符

    1、算术运算符

    + 相加
    - 相减
    * 相乘
    / 相除
    % 求余
    ++ 自增
    -- 自减

    2、关系运算符

    == 等于
    != 不等于
    > 大于
    < 小于
    >= 大于等于
    <= 小于等于

    3、位运算符

    & 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。
    | 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或。
    ^ 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。
    << 左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
    >> 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。

    4、逻辑运算符

    && 与
    || 或
    !(感叹号) 非

    5、赋值运算符

    += (C += A 等于 C = C + A)
    -= (C -= A 等于 C = C - A)
    *= (C *= A 等于 C = C * A)
    /= (C /= A 等于 C = C / A)
    %= (C %= A 等于 C = C % A)

    6、运算符优先级

    二、golang if判断

    语法:
    if 条件1 {
    } else if 条件2 {
    } else if 条件3 {
    } else {
    }

    如:

    func add(x int){
        if x == 0 {
            fmt.Println("0")
    }else if x == 1 { 
            fmt.Println("1")
    }else if x == 2 {
            fmt.Println("2")
    }
    }
    

      

     三、for循环

    语法:
    for i := 0; i < 10; i++ {
    }
    如:

    func main(){
        for i := 0;i < 10;i++{
            fmt.Println(i)}
    }
    

    四、while语句(死循环)

    #死循环(go没有while,死循环也是用for)
    语法:
    for true {
    }或
    for {
    }

    如:

    var i int
         for {
          i += 1
          fmt.Println(i)
         }
    

      

    五、range (类似python的range)(不能是数字,可以是字符串、列表、键值对等)

    例子:

    例子1:
          x := "hello"
          for i := range x{
          fmt.Println(i)
    }
    结果:
    0
    1
    2
    3
    4
    
    例子2:
          x := "hello"
          for i,v := range x{
          fmt.Println(i,v)
    }
    结果:
    0 104
    1 101
    2 108
    3 108
    4 111
    

      

    六、switch case

    语法:
    switch var {
    case var1:
    case var2:
    case var3:
    default:
    }

    如:

    func sc(x int){
        switch x {
        case 1:
            fmt.Println("1")
        case 2,3:
            fmt.Println("2")
        case 5,4:
            fmt.Println("3")
        default:
            fmt.Println("default")
    
        }  
    
    }
    
    func main() {
        sc(1)
        sc(2)
        sc(5)
        sc(10)
    }
    
    结果:
    1
    2
    3
    default
    

      

    #使用fallthrough强制执行后面的case代码

    例子:

    func sc(x int){
        switch x {
        case 5,4:
            fmt.Println("3")
            fallthrough //添加,就会执行后面一条case的结果
        case 6,7:
            fmt.Println("5")
        case 8:
            fmt.Println("7")
        default:
            fmt.Println("default")
    
        }  
    
    }
    
    func main() {
        sc(5)
    }
    结果:
    3
    5
    

      

    七、label break(用于退出循环)

    例如:




    func main() { x := 0 LABLE_test: //指定标签 for { x += 1 fmt.Println(x)      if x == 3{ continue //跳过当前循环,和其它语言的continue一样      } if x > 10{ break LABLE_test //跳出指定的标签,如果后面不接标签的话,就是退出当前循环 } } } 结果: 1 2 4 5 6 7 8 9 10 11

      

     八、goto语句

    1、go语言的goto语句可以无条件的转移到程序中的指定行
    2、goto语句通常与条件语句配合使用
    3、在go程序中一般不主张使用goto语句。

    goto语法

    toto label
    ......
    label:statement

    goto流程图

    例如:

    package main
    import "fmt"
    
    
    func main(){
        var n int = 2
        fmt.Println("goto")
        if n > 1 {
            goto label1
        }
        fmt.Println("s1")
        fmt.Println("s2")
        fmt.Println("s3")
        label1:
        fmt.Println("s4")
        fmt.Println("s5")
    
    }
    
    
    ##结果
    goto
    s4
    s5
    

      

    九、golang包的导入

    包的基本概念

    每一个go文件都是属于一个包,go是以包的形式累管理文件和项目目录结构的。

    包的作用

    1、区分相同名字的函数,变量等标识符

    2、当程序文件很多时,可以很好的管理项目

    3、控制函数、变量的访问范围,即作用域

    包的导入

    1、单个包导入 import "fmt"
    2、多个包导入
    import (
    "fmt"
    "strings"
    )
    3、 点(.)操作
    点(.)标识的包导入后,调用该包中函数时可以省略前缀包名
    如:
    package main
    import . "fmt"
    func main(){
    Println("ok") //省略了前面的fmt
    }
    4、别名
    如:
    package main
    import qq "fmt" //设置fmt别名为qq
    func main(){
    qq.Println("ok")
    }
    5、(_)下划线
    导入该包,但不导入整个包,而是执行该包中的init函数,因此无法通过包名来调用包中的其他函数。
    如:
    import _ "fmt"

    十、包的导出

    1、查看GOPATH变量,没有就配置

    [root@localhostgo_test]#go env 
    GOARCH="amd64"
    GOBIN=""
    GOEXE=""
    GOHOSTARCH="amd64"
    GOHOSTOS="linux"
    GOOS="linux"
    GOPATH="/root/go_test" //变量
    GORACE=""
    GOROOT="/usr/lib/golang"
    GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
    GCCGO="gccgo"
    CC="gcc"
    GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build340883937=/tmp/go-build -gno-record-gcc-switches"
    CXX="g++"
    CGO_ENABLED="1"
    CGO_CFLAGS="-g -O2"
    CGO_CPPFLAGS=""
    CGO_CXXFLAGS="-g -O2"
    CGO_FFLAGS="-g -O2"
    CGO_LDFLAGS="-g -O2"
    PKG_CONFIG="pkg-config"
    
    ###2、创建包
    [root@localhostfz]#ll
    总用量 4
    -rw-r--r-- 1 root root 56 3月  20 09:42 fz.go
    [root@localhostfz]#pwd
    /root/go_test/src/fz
    [root@localhostfz]#ll
    总用量 4
    -rw-r--r-- 1 root root 56 3月  20 09:42 fz.go
    [root@localhostfz]#cat fz.go 
    package fz
    
    func Add(a,b int) int { //首字母必须大写
        return a + b 
    }
    
    ##应用
    [root@localhostgo_test]#cat class7.go 
    package main
    import (
        "fmt"
        "fz"
    )
    
    func main(){
        var x int
        x = fz.Add(1,2)
        fmt.Println(x)
    
    }
    
    ##测试
    [root@localhostgo_test]#go run  class7.go
    3
    

      

  • 相关阅读:
    Python常用函数
    MySQL常用操作
    Python与JAVA的异同
    token
    用户cookie和会话session、sessionID的关系
    Jenkins应用
    Python3 logging模块
    python 多线程threading模块
    引用的声明周期结束时,并不会调用析构函数,只有本体的声明周期结束时,才会调用析构函数
    行为像指针的类的对象每次作为参数传入函数或者传出函数时都要小心
  • 原文地址:https://www.cnblogs.com/zhangb8042/p/10496016.html
Copyright © 2020-2023  润新知