• Go 语言变量、常量


    变量

    第一种,指定变量类型,声明后若不赋值,使用默认值。

    var v_name v_type
    v_name = value

    第二种,根据值自行判定变量类型。

    var v_name = value

    第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。但是只能在函数体内使用,否则不报错

    v_name := value
    
    // 例如
    var a int = 10
    var b = 10
    c := 10

    举例子

    //声明变量
    var a int =10
    var b=20
    var d string="mygo"
    //这个地方会报错:syntax error: non-declaration statement outside function body
    //原因在于 := 只能用于方法内,当定义全局变量时只能通过 var 关键字来定义
    // c :=30  
    
    // 这种因式分解关键字的写法一般用于声明全局变量
    var(
        e int
        f bool
    )
    
    
    //类型相同多个变量, 非全局变量
    //全局变量是允许声明但不使用
    var v1, v2, v3= 1, 2, 3  //必须先声明,然后修改变量
    var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要显示声明类型,自动推断
    
    func main() {
        //局部变量声明后必须使用
        c :=30
        fmt.Println(a,b,d,c,d,e,f,vname3)  //10 20 mygo 30 mygo 0 false
    }

     常量:

    常量是一个简单值的标识符,在程序运行时,不会被修改的量。

    常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型  

    常量的定义格式:

    const identifier [type] = value

    你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。

    • 显式类型定义: const b string = "abc"
    • 隐式类型定义: const b = "abc"

    多个相同类型的声明可以简写为:

    const c_name1, c_name2 = value1, value2
    //常量 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
    const indentifiter int=100  //显式类型定义
    const c_namme="zzy"   //隐式类型定义,引号用双引号,单引号报错
    const (   //常量还可以用作枚举:
        Unknown = 0
        Female = 1
        Male = 2
    )
    
    func main() {
        print("&&&",Unknown)  //&&&0
        const LENGTH int =10
        const WIDTH int =5
        fmt.Println(indentifiter,c_namme,LENGTH *WIDTH,Unknown,Female,Male)   //100 zzy 50 0 1 2
    }

    常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过:

    package main
    
    import "unsafe"
    const (
        a = "abc"
        b = len(a)
        c = unsafe.Sizeof(a)
    )
    
    func main(){
        println(a, b, c)
    }
    //abc 3 16

    iota,特殊常量,可以认为是一个可以被编译器修改的常量。

    iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

    iota 可以被用作枚举值:第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:

    package main
    
    import "fmt"
    
    func main() {
        const (
                a = iota   //0
                b          //1
                c          //2
                d = "ha"   //独立值,iota += 1
                e          //"ha"   iota += 1
                f = 100    //iota +=1
                g          //100  iota +=1
                h = iota   //7,恢复计数
                i          //8
        )
        fmt.Println(a,b,c,d,e,f,g,h,i)
    }
    //0 1 2 ha ha 100 100 7 8

    下面这种用法,没看出用处

    i=1<<0
    
    j=3<<1
    
    k=3<<2
    
    l=3<<3
    /*
    - **j=3**:左移 1 位,变为二进制 110, 即 6;
    - **k=3**:左移 2 位,变为二进制 1100, 即 12;
    - **l=3**:左移 3 位,变为二进制 11000,即 24。
    - **i=1**:左移 0 位,不变仍为 1;
    */
  • 相关阅读:
    C#通信学习(一)
    ms sql server 大批量导入
    PostgreSQL
    服务器性能指标有哪些
    C#一些需要注意的点(中级)
    JSON.parse与eval区别
    NDK编程中如何在C文件中打印调试信息
    Stack switching mechanism in a computer system
    Weex 相关文章收集
    JavaScript HTML DOM 元素(节点)
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/10191851.html
Copyright © 2020-2023  润新知