日期: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\n", 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中所有的关键字,一些已经接触过,另外一些将在后面介绍。

Go语言学习笔记(二) [变量、类型、关键字]的更多相关文章

  1. Go语言学习笔记二: 变量

    Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...

  2. C#学习笔记二: C#类型详解

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

  3. 【GO】GO语言学习笔记二

    基本类型: 布尔型:boolean 整型:int8,byte,int16,int,uint,uintptr等 浮点型:float32,float64 复数类型:complex64,complex128 ...

  4. Go语言学习笔记(2)——变量、常量

    1. 变量(变量由字母.数字和下划线组成,且不能以数字开头!)      1.1 第一种 var name type // 未赋值时使用默认值 name = value 1.2 第二种: 根据所赋的值 ...

  5. Go语言学习笔记1 变量,类型以及赋值

    1.变量 1.1 声明变量 使用var关键字可以创建一个指定类型的变量: var i int = 0 var i = 0 var i int 以上三个表达式均是合法的,第三个表达式会将i初始化为int ...

  6. C语言学习笔记--enum和sizeof关键字

    1.enum关键字 C语言中enum关键字用来定义枚举类型 (1)enum 是 C 语言中的一种自定义类型(2)enum 值是可以根据需要自定义的的整型值(3)第一个定义的 enum 值默认为 0 ( ...

  7. C语言学习笔记二---数据类型运算符与表达式

    一.C的基本语法单位 1.标识符:有效长度:31(DOS环境下) 2.关键字:main不是 3.分隔符:空格符,制表符,换行符,换页符 4.注释符:a./*.....*/   b.// 二.C的常用输 ...

  8. 初步swift语言学习笔记2(可选类型?和隐式可选类型!)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/28904115 转载请注明出处 假设认为文章对你有所帮助.请通过留言 ...

  9. c语言学习笔记 const变量

    在c语言的编程过程中经常会遇到有常数参加运算的运算,比如这种. int a=100*b; 这个100我们叫常数或者叫常量,但是程序中我们不推荐这种直接写常数的方法,有两个缺点. 第一是程序可读性差. ...

随机推荐

  1. mysql error#1251客户端版本过低

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; Query OK, 0 ...

  2. Mac下Tomcat安装与Intellij IDEA配置Tomcat

    Mac下Tomcat安装与Intellij IDEA配置Tomcat 一 安装 1 下载地址:https://tomcat.apache.org/download-90.cgi 2 将压缩包解压后移至 ...

  3. 在cmd下可以import cv2,而Pycharm报错:找不到cv2

    平台:win10 x64+Pycharm+Anaconda3+opencv 安装教程:参考博客——http://blog.sina.com.cn/s/blog_cca23c300102xiy4.htm ...

  4. Python学习第四章

    1.类和对象: 类对象支持两种操作:属性引用和实例化. 属性引用:obj.name 构造方法:类会定义一个名为__int__()的特殊方法如下 def  __init__(self):       s ...

  5. day11_雷神_udp、多进程等

    day11 1.网络编程 1.1 udp协议 client端 import json import socket server_addr = ('127.0.0.1',9090) sk = socke ...

  6. 人工智能必须要知道的语义分割模型:DeepLabv3+

    图像分割是计算机视觉中除了分类和检测外的另一项基本任务,它意味着要将图片根据内容分割成不同的块.相比图像分类和检测,分割是一项更精细的工作,因为需要对每个像素点分类,如下图的街景分割,由于对每个像素点 ...

  7. jsapi微信支付

    JSAPI微信支付 引用js <script type="text/javascript" src="http://res.wx.qq.com/open/js/jw ...

  8. LCA(最近公共祖先)——Tarjan

    什么是最近公共祖先? 在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先节点. 换句话说,就是两个点在这棵树上距离最近的公共祖先节点. ...

  9. JAVA基础语法——标识符、修饰符、关键字(个人整理总结)

    JAVA基础语法——标识符.修饰符.关键字 一 . 标识符 1.1    什么是标识符 就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Dem ...

  10. 转载 用Python实现设计模式——工厂模式

    转载自 SegmentFault作者 夏秋, https://segmentfault.com/a/1190000013053013 非常感谢这位作者的深入浅出的讲解. 前言 工厂模式,顾名思义就是我 ...