go语言基础1

1.token

        token是构成源程序的基本不可在分割单元。编译器编译源程序的第一步就是将源程序分割为一个个独立的token,这个过程就是词法分析。Go语言的token可以分为关键字、标识符、操作符、分隔符和字面常量等,如图所示:

        Go token分隔符有两类:一类是操作符,还有一类自身没有特殊含义,仅用来分隔其他token,被称为纯分隔符。

        操作符:操作符就是 个天然的分隔符,同时其自身也是一个 token, 语句如下所示 sum:=a+b

        “:=”和“+”既是分隔符,也是token,所以这个语句被分割为5个token:“sum”、“:+”、“a”、“+”、“b”。

        纯分隔符:其本身不具备任何语法含义,只作为其他token的分割功能。包括空格、制表符、换行符和回车符,多个相邻的空格或者制表符会被编辑器看作分隔符处理,比如package    main

2.标识符

        标识符是用来标识变量、类型、常量等语法对象的符号名称,其在语法分析时作为一个token存在。编程语言的标识符总体上分为两类:一类是语言设计者预留的标识符,一类是编程者可以自定义的标识符。

        Go的标识符构成规则:开头一个字符必须是字母或者下划线,后面跟任意多个字符、数字或者下划线,并且区分大小写,Unicode字符可以作为标识符的构成,但是一般不推荐。我们在定义新的标识符时要避开Go语言预声明标识符,以免引起混乱。例如:_a11,a97,aa66,_aa99都可以,9aa,-9hh就不合规了。

        2.1 Go语言的预声明标识符有以下25个关键字:

                2.1.1 引导程序整体结构的8个关键字

package定义包名的关键字
import导入包名关键字
const常量声明关键字
var变量声明关键字
func函数定义关键字
defer延迟执行关键字
go并发语法糖关键字
return

函数返回关键字

                 2.1.2 声明复合数据模块的4个关键字

struct定义结构类型关键字
interface定义接口类型关键字
map声明或创建map类型关键字
chan声明或创建通道类型关键字

                 2.1.3 控制程序结构的13个关键字

if elseif else语句关键字
for range break continuefor循环使用的关键字
switch select type case default fallthroughswitch和select语句使用的关键字
gotogoto跳转语句关键字

             2.2 内置数据类型标识符20个

                        数据类型分为整型、字符型、字符串型、接口型和布尔型,其中数值分为整型、浮点型和复数型

整型byte int int8 int16 int32 int64 uint unint8 uint16 uint32 uint64 uintprt
浮点型float32 float64
复数型complex64 complex128
字符和字符串型string rune
接口型error
布尔型bool

              2.3 内置函数15个

        make new len cap append copy delete panic recover close complex real image Print Printin

              2.4 常见标识符4个

true flasetrue false ool 类型的两常量值:真和假
iota用在连续的枚举类型的声明中
nil指针/引用型额变量的默认值为nil

                2.5 空白标识符1个

                       空白标识符:_ 

      空白标识符有特殊的含义,用来声明一个匿名的变量,该变量在赋值表达式的左端,空白标识符引用通常被用作占位,比如忽略函数多个返回值中的一个和强制编译器做类型检查

        3.操作符和分隔符

                操作符就是语言所使用的符号集合包括运算符、显式的分隔符,以及其他语法辅助符号。操作符不但自身是一个token ,具备语法含义,同时其自身也是分隔其他token的分隔符.

                3.1 算术运算符5个

+        -         *         /         % 加减乘除余  

算术计算顺序是按照优先级从左到右进行的 当然也可以使用括号来改变操作数的结合顺序。

                3.2 位运算符6个

&         |         ^         &^         >>         <<        

位运算符用于整数的位运算操作

                3.3 赋值和赋值复核运算符13个

:=  =  +=  -=  *=  /=   %=  &=  |=  ^=    &^=   >>=    <<=

                3.4 比较运算符6个

>    >=    <    <=    ==    !=

                3.5 括号6个

(        )    {        }        [        ]

                3.6 逻辑运算符3个

&&        ||        !

                3.7 自增自减操作符2个

++        --

                3.8 其他运算符6个

:        ,        ;        .        ...        <-

4.变量和常量

        Go通过一个标识符来绑定一块特定的内存,后续对特定的内存额操作都可以使用该标识符来代替,这类绑定某个存储单元的标识符又可以分为两类:变量和常量,变量表示指定的内存是可以被修改的,常量表示指定的内存不能被修改。

        4.1 变量

        变量:使用一个名称来绑定一块内存地址,该内存地址中存放的数据类型由定义变量时指定的类型决定,该内存地址里面存放的内容是可变的。

        4.1.1 显示额完整声明

var varName dataType [ = value] 
关键字var用于变量声明。
varName 是变量名标识符。
dataType 基本类型。
value 是变量的初始值,初始值可以是字面量,也可以是其他变量名,还可以是一个表达式;如果不指定初值, Go 默认将该变量初始化为类型的零值。
Go 变量声明后就会立即为其分配空间
var a int = l 
var a int = 2*3 
var a int =b 

        4.1.2 短类型声明

varName := value 
:= 声明只能出现在函数内,包括方法内
此时go编译器会根据数据类型自动判断
go支持多个类型变量同时声明赋值,如a , b := 1,”hello" 

        4.2 常量

        常量使用一个名称来绑定一块内存地址,该内存地址中存放的数据类型由定义常量时指定的类型决定,而且该内存地址里面存放的内容不可以改变 Go 中常量分为布尔型、字符串型和 数值型常量

        

//类似枚举的 iota
const ( 
    c0 = iota I I cO == 0 
    cl = iota I I cl == 1 
    c2 = iota I I c2 == 2 
)
//简写模式
const ( 
    c0 = iota //cO == 0 
    c1    //c1 == 1
    c2    //c2 == 2
)

  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值