• Go语言学习笔记(二) [变量、类型、关键字]


    日期:2014年7月19日

     1、Go 在语法上有着类 C 的感觉。如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔。一般情况下,你不需要分号。

     
    2、Go 同其他语言不同的地方在于变量的类型在变量名的后面。例如:不是,int a,而是 a int。当定义了一个变量,它默认赋值为其类型的 null 值。这意味着,在 var a int后,a 的 值为 0。而 var s string,意味着 s 被赋值为零长度字符串,也就是 ""。
     
    3、Go语言的变量声明和赋值
         在Go中使用var对变量进行声明,
         例如:
          var a int 
          a = 15
         var将变量a声明为int型,然后通过=赋值。
         当然在Go语言中,我们可以把声明和赋值过程一步完成,
         例如:
          a := 15(这一形式只可用在函数内)
         在这种情况中,变量的类型是由值推演出来的,值15是int的类型的,推演出变量a为int类型。
         
         使用var可以声明一组变量,
         例如:var (
                         a int
                         b bool
                    )
          如果变量的类型一致,还可以使用var a,b int 这种方式来声明变量,当然还可以使用这种方式进行声明和赋值:a,b := 20,16
          在Go语言中有一个特殊的变量(_,即下划线),任何赋给它的值都被丢弃,这将在一些地方变得很有用处。
          需要注意的是,Go 的编译器对声明却未使用的变量在报错。
       
    4、Go语言的类型
         1)布尔类型(bool):值可以为true和false
         2)数字类型:int,这个类型根据硬件决定,在32位机器上,int是32位的,在64位机器上,int是64位。uint也是如此。
              当我们想要明确长度时,可以使用int32(uint32)。完整的整数类型列表(符号和无符号)是 int8,int16,int32,int64 和 byte,uint8,uint16,uint32,uint64。byte 是 uint8 的别名。浮点类型的值有 float32 和 float64 (没有 float 类型)。64 位的整数和浮点数总是 64 位的,即便是在 32 位的架构上。需要留意的是这些类型全部都是独立的,并且混合用这些类型向变量赋值会引起编译 器错误。
               例如:
                var a int
                var b int32
                a = 15
                b = a + a//编译器会报错,提示(cannot use g + g (type int) as type int32 in assignment)
              对于数字类型的赋值,可以使用八进制、十六进制或科学计数法:077,0xFF,1e3 或者 6.022e23 这些 都是合法的。
         3)常量:constant ,常量在编译时被创建,只能是数字、字符串或布尔 值。
              例如:
              const (
                    a = iota
                    b = iota //iota是一个枚举值,第一次使用时值为0,下一次使用时值就变为1,每一次使用值都会+1
              )
              const (
                    a = 0
                    b bool = true //明确指定常量的类型
             )
          4)字符串
               字符串赋值:s := "Hello World!"
               字符串在 Go 中是 UTF-8 的由双引号(”)包裹的字符序列。如果你使用单引号(’)则 表示一个字符(UTF-8 编码),这种在 Go 中不是 string 。一旦给变量赋值,字符串就不能修改了:在 Go 中字符串是不可变的。
               那么如何实现改变字符串这种操作呢?需要通过下面这种方式:
                   s := "Hello,World!"
                   m := []rune(s)
                   m[0] = 'C'
                   s2 := string(m) //实际上只是新创建了一个字符串
                   fmt.Printf("%s ", s2)
               多行字符串:
                   s := "Starting part"
                          + "Ending part"
                   会被转换为:
                   s := "Starting part" ;
                          + "Ending part" ;
                   这是错误的语法,应当这样写:
                   s := "Starting part" +
                          "Ending part"
                  Go 就不会在错误的地方插入分号。
                 还可以使用反引号来实现,s := `Starting part
                                                                   Ending part`
                 作为原始字符串符,值 在引号内的字符是不转义的。
          5)rune 
                rune是int32的别名,用 UTF-8 进行编码。这个类型在什么时候使用呢?例如需要 遍历字符串中的字符。可以循环每个字节(仅在使用 US ASCII 编码字符串时与字符等 价,而它们在 Go 中不存在!)。因此为了获得实际的字符,需要使用 rune 类型。
          6)复数
                Go 原生支持复数。它的变量类型是 complex128 (64 位虚数部分)。如果需要小一些 的,还有 complex64 – 32 位的虚数部分。复数写为 re + imi,re 是实数部分,im 是虚数部分,而 i 是标记 。
                例如:
                var ss complex64 = 5 + 5i
                fmt.Printf("Value is: %v", ss)
               打印结果: Value is: (5+5i)
          7)错误
               var e error定义了一个error类型的变量e,其的值是 nil。这个 error 类型是一个接 口。
     
    5、Go语言的运算符
          Go 支持普通的数字运算符,下图中列出了当前支持的运算符,以及其优先级。它们 全部是从左到右结合的。
               
          Go语言不支持运算符重载(或者方法重载),而一些内建运算符却支持重载。例如 + 可以用于整数、浮点数、复数和字符串(字符串相加表示串联它们)。
     
    6、Go关键字
         
          上图中列出了Go中所有的关键字,一些已经接触过,另外一些将在后面介绍。
  • 相关阅读:
    图片延迟加载方法
    mongodb常用命令
    未知尺寸元素水平垂直居中:
    nodejs学习之加密
    nodejs学习之events的使用
    nodejs学习之events
    学习Nodejs之mysql
    PHP之几道面试题
    Jquery学习插件之手风琴
    我的第一篇博客
  • 原文地址:https://www.cnblogs.com/javagoboy/p/3854742.html
Copyright © 2020-2023  润新知