zoukankan      html  css  js  c++  java
  • 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;
    */
  • 相关阅读:
    餐巾计划问题 zwk费用流解法
    Subsequence Count 2017ccpc网络赛 1006 dp+线段树维护矩阵
    smarty之缓存机制
    mysql中 where in 用法详解
    sql语句中left join、inner join中的on与where的区别
    PHP表单数组的具体使用方法介绍
    document.body.scrollTop值为0的解决方法[转]
    left join on and和left join on where条件的困惑[转]
    Uedit32_17.00 修改某一语言背景色-修改后续名后语法着色及某语言的大括号{}对齐
    CSS 针对谷歌浏览器(Chrome) safari的webkit核心浏览器CSS hack
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/10191851.html
Copyright © 2011-2022 走看看