美文网首页
Go的变量定义,函数不定参,返回多参和一些操作符使用

Go的变量定义,函数不定参,返回多参和一些操作符使用

作者: Link_Biao | 来源:发表于2017-09-26 23:54 被阅读0次

    在go语言中,不像和其他语言一样,他没有所谓的public,private这两个定义公共和私有的关键字,他约束定义首字母大写就是公有的pulbic,小写或者下划线_就是私有的private。

    var MAX_COUNT int=10//默认public,首字母大写
    var min_count int=1//默认private,首字母小写
    

    首先,在工程目录创建一个执行函数入口,包名为mian,这个不可改变,然后导入ftm这个基础函数包,可以取别名fm,或者.符号,但是一般不建议用.作别名,容易让人一眼看不知道导入了什么包

    import (
        f "fmt"
    )
    

    go声明变量,如果不声明变量类型,则由系统检测

    • 常用声明
    var var0 int=0//单个声明
    var va1,va2,va3 int=1,2,3//多个声明
    
    • 简洁声明
    var0:=0//单个声明
    va1,va2,va3:=1,2,3//多个声明
    
    • 省略变量类型
    var var0=0//单个声明
    var va1,va2,va3=0,1,2//多个声明
    
    • 常量声明用const
    const(
        FIRST  int= 0//public
        SECOND     //结果0,如果没有定义值,常量里面的值是自上引用
        second =2//private
    )
    
    • go枚举,用关键字itoa,从0开始,每次自增1,不管它出现在常量集合定义的第几位,0都是从常量集合的第一个常量开始,每出现一个自增1,遇到第二个常量声明const关键字时候重置为0
    const ( 
        FIRST  int= 1
        SECOND //结果1,自上引用
        THIRD  = iota//结果2
    )
    
    • 类型别名,go语言可以声明一个类型别名,就好比取了另外一个名字,作用不变,用关键字type声明
    type(
    tInt int
    tFloat float64
    tByte byte
    )
    
    var va0 tInt=2//使用的时候
    

    go函数是可以返回多个参数的,这一点跟其他语言有点不一样,表达式为

    func 函数名(参数列表) (返回值列表) {
        // 函数体
    }
    
    //一个返回值,返回列表可以不需要用()包裹返回参数类型
    func t(a int) int {
        return a + 1
    }
    
    //多个返回值,需要用()包裹返回参数类型
    func t(a int) (int, int) {
        return a + 1, a + 2
    }
    
    //不定参数
    func t1(args...int){
        for i,arg:=range args{
            f.Println("values:",arg," position:",i)
        }
    }
    
    //任意类型的不定参数函数定义
    func 函数名(args ...interface{}) (返回值列表) {
        // 函数体
    }
    //例子
    func t2(args ...interface{}) {
        for _, arg := range args {
            switch arg.(type) {
            case int:
                f.Println(arg, "is an int value.")
            case string:
                f.Println(arg, "is a string value.")
            case int64:
                f.Println(arg, "is an int64 value.")
            default:
                f.Println(arg, "is an unknown type.")
            }
        }
    }
    
    • go是有闭包概念的,语法
    c := func() func(参数类型列表) 返回值类型列表 {
        // 自由变量定义
        ...
        return func(参数列表) 返回值列表 {
            // 函数定义
        }
    }
    
    //函数参数是int类型,返回两个函数,返回的函数的参数都是int类型,返回值也都是int类型的
    func1 := func(x int) (func(int) int, func(int) int) {
            a1 := func(i int) int {
                return i + x
            }
            a2 := func(j int) int {
                return j + x
            }
            return a1, a2
        }
        
        fc1, fc2 := func1(8)
        f.Println(fc1(2), fc2(3))//结果18,28
    

    位运算符,譬如<< >>

    3<<2//结果就是12
    
    11>>2//结果就是2
    

    位运算符计算先从十进制转二进制,3的二进制就等有0011,向左位移两位,就是变成等于1100,再转十进制就等于12了,向右位移的,也是先转换二进制,11的二进制就等于1011,向右位移两位,高位补0,就变成等于0010,再转十进制就等于2了

    • 其他运算符的
    3  0011//二进制值
    11 1011//二进制值
    &     3&11 //如果两个都是1,就是1,如果不是,就是0,所以结果为0011,十进制结果就是3
    |     3|11 //如果其中个都是1,就是1,如果两个都不是,就是0,所以结果为1011,十进制结果就是11
    ^     3^11 //如果其中两个都是1,就是0,如果其中一个是1,就是1,所以结果为1000,十进制结果就是8
    &^    3&^11 //如果下面的1,就强制转换对应上面的为0,如果下面是0,就不做操作,所以结果为0000,十进制结果就是0
    

    相关文章

      网友评论

          本文标题:Go的变量定义,函数不定参,返回多参和一些操作符使用

          本文链接:https://www.haomeiwen.com/subject/skqyextx.html