• 让我们一起Go(五)


    前言

    转眼间,已经2013年了,新的一年,还是继续学习Go啊,本系列不小心跨年了,哈哈哈。上篇中我们初步了解了Go语言的变量声明,今天我们首先还是要继续聊聊变量。文章更新较慢,请谅解,因为公司项目太忙,白天基本没时间,晚上抽空写的,且本人水平有限,难免有不对之处。

    一、再谈Go语言变量

    上篇中,我们知道在Go语言中是通过var 关键字来声明变量的,那么声明变量,我们没有给变量赋值,那些变量是否有初始值呢?

    为了证明这点,其实很容易,你只要写些代码,然后打印出来就可以了。下面测试一部分数据:

     1 package main
     2 import "fmt"
     3 func main(){
     4     var a int
     5     var b float32
     6     var c bool
     7     var d string
     8     var e []int
     9     var f map[string] int
    10     var g *int
    11     if nil == e{
    12         fmt.Print("e is nil \n")
    13     }
    14     if nil == f{
    15         fmt.Print("f is nil \n")
    16     }
    17     fmt.Print(a,b,c,d,e,f,g)
    18 }

    通过上面的例子,我们已经明确了Go语言声明的变量默认是有初始值的。大致分成以下几种:
    1.int int32 int64 -> 0

    2.bool -> false

    3.float32 float64 ->0.0

    4.pointer(指针) map array slice ... -> nil

    在Go语言中也可以一次声明多个变量:

    var a,b,c int

    如果是不同类型的变量则可以这样:

    var (

      a int

      b bool

    )

    当然也可以直接声明并初始化多个变量:

    var a,b,c int = 1,2,3

    var a int ,c bool = 1,false

    为了简化,也可以使用类型推断的特性,如下声明初始化:

    var a,b = false,"am"

    a,b := true,3

    以上只是对Go语言中最简单的几种类型的声明初始化做了介绍,更复杂的类型,例如数组,map,函数,接口等,将在后续中详细讲到这一类型再做介绍,因为,如果这里就介绍,又会使得本篇长度变长,内容过多,本着一贯的简短宗旨,所以请耐心等等。

    二、Go语言的基本类型

                     type                     length                    des

    1. bool                       1                        true, false。==========不能把⾮零值当作 true 。
    2. byte                       1                        uint8 别名
    3. rune                       4                        int32  别名。代表⼀个 Unicode  Code Point。int/uint 依据所运⾏的平台,可能是 32bit 或 64bit。
    4. int8/uint8                1                       -128 ~  127; 0  ~  255
    5. int16/uint16            2                      -32768  ~  32767; 0  ~  65535int32/uint32 4 -21 亿 ~  21亿,  0  ~  42亿
    6. int64/uint64            8
    7. float32                    4                       精确到 7  个⼩数位
    8. float64                    8                       精确到 15 个⼩数位
    9. complex64               8
    10. complex128            16
    11. uintptr                                             ⾜够保存指针的 32 位或 64 位整数
    12. array                                               值类型 如:[2]int
    13. struct                                              值类型
    14. string                                              值类型
    15. map                                                引⽤类型
    16. channel                                           引⽤类型
    17. slice                                                引⽤类型 如:  []int
    18. interface                                          接⼝类型
    19. function                                            函数类型

     哇,上面好大一堆,不过没关系。大部分还都是很熟悉的,如果你写过其它语言的话,至于不熟悉的那些,在今后的日子里,将会逐一攻破,至于简单的,这里也不将细说,因为实在没啥好说的,就像你的名字一样,你为什么叫这个名字?好吧,可以扯你的祖先姓氏开始,再扯名字含义,当然变量也可以扯,可以扯到内存......但对于现在来说意义不大,所以关于变量的基础今天就到这里了,如果你已经忍不住了可以去网上查阅更多资料。

    三、变量类型转换

    讲完各种变量,当然也得讲讲他们之间如何转换的。记住在Go语言中,不支持隐式转换,需要你指明。就像下面一样:

    var a int = 2

    var b float64 = float64(a)

     规则很简单 就是 <你需要转换的类型>(原始变量)

    是不是很简单?其它类型请自行尝试,我太懒了不想这里做机械的重复。

    四、常量

    说完变量再来说说常量,常量就如它名字一样,正常的量?当然不是,哈哈,常量其实可以理解为就是不是变量(……*&&……一堆人开骂)其实简单的说,常量是指在程序运行过程中,其值不可改变的量.

    那么如何声明定义常量,看下面:

    1 const x int32 = 199
    2 const y = "Hello"
    3 const a, b, c = "apple", true, "jobs"  
    4 const (
    5     male= "jack"
    6     fmale = false
    7 )

    今天就到这里,希望对大家有帮助。

    作者:Sirk  
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    How Ironic Inspector Works
    tinyipa make
    dib build ipa image Injection password
    coreos ipa image Injection of public key
    Buildroot ipa image
    diskimage-builder
    ironic baremetal node rescue/unrescue mode
    OpenStack-Ironic裸金属简介
    Python之错误与异常处理
    Python之上下文管理协议
  • 原文地址:https://www.cnblogs.com/vimsk/p/2843311.html
Copyright © 2020-2023  润新知