【Golang 基础】Go 语言的变量与常量

Go 语言的变量与常量

变量声明,初始化与赋值 (示例代码

  • 变量的声明格式:var <变量名称> [变量类型]
  • 变量的赋值格式:<变量名称> = <值,表达式,函数等>
  • 声明和赋值同时进行:var <变量名称> [变量类型] = <值,表达式,函数等>
  • 分组声明的格式
package basic

import "fmt"

func DeclaratGroupVariable(){
    // 分组声明变量
    var (
        name string
        age int = 18
    )

    name = "hvkcoder"

    fmt.Printf("Hello!My name'is %d. I'm %d years old", name, age)
}
  • 简写声明格式:<变量名称> := <值,表达式,函数等>,只能在局部变量声明时使用,并且必须赋值;
  • 声明多个变量,需要以 , 隔开;
package basic

import "fmt"

func DeclaratMultiVariable(){
    // 声明多个变量
    var a , b, c int
    // 为多个变量赋值
    a, b, c = 1 ,2, 3
    fmt.Printf("a = %d , b = %d , c = %d", a, b, c)

    // 声明多个变量并赋值
    var e, f, g int = 4, 5, 6
    fmt.Printf("e = %d , f = %d , g = %d", e, f, g)

    // 简写声明
    h, i, j := 7, 8, 9
    fmt.Printf("h = %d , i = %d , j = %d", h, i, j)
}

声明全局变量时,不能使用简写声明,且必须使用 var 关键字。变量名是 下划线(_) 表示忽略。

常量定义的形式,类型范围(示例代码

  • 常量定义从形式上可以分为 显式 和 隐式;

    • 显式:const <常量名称> [type] = value
    • 隐式:const <常量名称> = value
  • 一般情况下常量名称需大写,若该常量为私有常量,只需在常量名前加 下滑线(_),如:const _PI = 3.14

  • 常量可以使用内置表达式,如:len()unsafe.SizeOf() 等;

package basic

import "unsafe"


func DeclaratExpression(){
    const (
        _NAME string = "hvkcoder"
        _NAME_LENGTH int = len(_NAME)
        _NAME_SIZE  = unsafe.Sizeof(_NAME)
    )
}
  • 多组常量声明时,常量默认取上一个常量的值;
package basic

import "fmt"

func DeclaratGroupConstant(){
    const (
        _NAME string = "hvkcoder"
        _FIRST_NAME
    )

    fmt.Println(_NAME)
    fmt.Println(_FIRST_NAME)
}

常量类型范围目前只支持 布尔型、数字型和字符串类型

特殊常量 iota

  • iota 只能在常量的表达式中使用,在 const 关键字出现时, iota将被重置为 0;

  • const 中每新增一行常量声明,将使 iota 计数一次;

  • iota 常见用法:

    • 跳值使用法
    package basic
    
    import "fmt"
    
    func JumpValueByIota(){
        const (
            a = 3.14
            b
            c = iota  // 2
            d         // 3
        )
        fmt.Println(a,b,c,d)
    }
    
    • 插值使用法
    package basic
        
    import "fmt"    
    
    func InsertValueByIota(){
        const (
            a = iota   // 0
            b = 3.14
            c = iota   // 2
            d          // 3
        )
        fmt.Println(a,b,c,d)
    }
    
    • 表达式隐式使用法
    package basic
    
    import "fmt"
    
    func ExpressionByIota(){
        const (
            B = 1 << (10 * iota)  // 1
            KB                    // 1024
            MB                    // 1048576
            GB                    // 1073741824
            TB                    // 1099511627776
            PB                    // 1125899906842624
        )
    
        fmt.Println(B,KB,MB,GB,TB,PB)
    }
    
    • 单行使用法
    package basic
    
    import "fmt"
    
    func SingleLineByIota(){
        const (
            a , b = iota + 1, iota + 2
            c, d = iota + 3, iota + 4
    
            // a => 0 + 1
            // b => 0 + 2
            // c => 1 + 3
            // d => 1 + 4
        )
        fmt.Println(a,b,c,d)
    }
    

变量的类型转换

  • Go 语言中不存在隐式转换,类型转换必须是显式的;
  • 类型转换只能发生在两种兼容类型之间;
  • 类型转换的格式:var <变量名称> [:]= <目标类型>(<需要转换的变量>);
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容

  • 我觉得自己曾经就是笑来老师笔下的那个给老板打工的人,关注的点永远都是工资的高低,总觉得自己的付出和工资不匹配。如果...
    小二徐阅读 361评论 6 2
  • 花凋 winky诗 风欲暖兮折春桃,父愿小囡承花妙。女儿红酒十八朝,青杏初成是窈窕。长街两岸青柳摇,青砖千踏姻缘簿...
    古韵依芳华阅读 2,160评论 0 1
  • 移动端meta标签设置 1.设置当前html文件的字符编码 1 2设置浏览器的兼容模式(让IE使用最新的浏览器渲染...
    小半_生阅读 2,654评论 0 1