Go 语言变量名由字母、数字、下划线组成,其中首个字母不能为数字。

一、Go的语言结构

1、Go的语言基础部分由这几个部分组成

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句&表达式
  • 注释

比如下面这个简单的代码:

  1. func main() {
  2. fmt.Println("第一个程序")
  3. }

需要注意的是,如果想把单独的.go文件作为独立的可执行文件的时候。需要在代码的第一行加上

  1. package main

文件的入口方法为:

  1. func main(){
  2.  
  3. }

go的语法和c是很像的,但是又没有c那么底层。所以有c基础的人,学习go会特别的快。需要注意的一点是:

go声明变量的时候是把变量类型放在变量的后面的,如下所示:

  1. var userName string = "Tinywan"

go也可以不指定数据类型,但是必须要赋值。如果不赋值,自动类型检查就无法起到作用,如下所示:

  1. var userName = "Tinywan"
    // 或者
    var userName = ""

附一个空格值给变量也是可以的,就是不能不赋值,也不能为null。而且在go中也没有null的概念,取而代之的是nil:意思为0、无的意思。(Lua也是这样子的)

还可以使用默认值,如下所示:

  1. var res bool

二、GO语言变量声明的方式

1、指定变量类型,声明后如果不做赋值,那么使用默认值

  1. //没有进行赋值,但是指明了是什么类型、go会自动加上空值。
  2. var a string

2、不指定变量类型,需要进行赋值操作。

  1. //可以不指定变量类型,通过变量值,go会自行判断该变量的类型。
  2. var a=1

3、不使用var关键字,直接:=对变量进行赋值操作。

  1. //这种方式是省略了var,但是这种方式能对新的变量使用,对已经声明的变量使用会报错。
  2. a:=1

注意:三种变量的声明形式的作用都是一样的,要么赋值可自动判断其类型,要么不赋值,指定变量类型,就这么两点。还需要注意的是,go的变量是如果被声明了,那么必须使用,不然会报错,如果不想使用可以加上_=varName,表示为已抛弃的变量。

  1. //已声明,但未使用
  2. var a=1
  3. //标识为已抛弃的变量。
  4. _=a

4、go的变量在已经被声明后,是不能使用:=再次赋值的。

  1. //这样是错误的
  2. var a=1
  3. a:=2

但是可以使用=为已声明的变量赋新的值。

  1. //这样做是可以的。
  2. var a=1
  3. a=2

而且如果变量值没被使用,那么请加上以抛弃的标识。

  1. _=a

5、go可以直接声明多个变量,通过函数可以返回多个返回值,比如:

  1. //一次性声明所有的变量类型为string类型
  2. var name1,name2,name3 string
  3.  
  4. //函数返回多个返回值
  5. func getName(name1,name2,name3,name4){
  6. return "aa","bb","cc","dd"
  7. }
  8.  
  9. //返回多个返回的值的函数需要用多个变量进行接受
  10. var a, b, c, d = getName()

6、go可使用var关键字声明全局变量,但是:=这种方式是不能用在全局变量中的。:=只能用在函数体内部。  

  1. var (
  2. a int
  3. b bool
  4. xx,yy,dd string="xx","yy","dd"
  5. //这里省略变量类型也是可以的。
  6. zz,aa="zz","aa"
  7. )

比如像这样,这样做会报语法错误

  1. var(
  2. a:=1
  3. )
  1. syntax error: unexpected :=

  

Golang入门教程(四)变量声明的更多相关文章

  1. Elasticsearch入门教程(四):Elasticsearch文档CURD

    原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...

  2. RabbitMQ入门教程(四):工作队列(Work Queues)

    原文:RabbitMQ入门教程(四):工作队列(Work Queues) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...

  3. 无废话ExtJs 入门教程四[表单:FormPanel]

    无废话ExtJs 入门教程四[表单:FormPanel] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在窗体里加了个表单.如下所示代码区的第28行位置,items:form. ...

  4. PySide——Python图形化界面入门教程(四)

    PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your Own Signals and Slots 翻译自:http://pythoncentral ...

  5. JasperReports入门教程(四):多数据源

    JasperReports入门教程(四):多数据源 背景 在报表使用中,一个页面需要打印多个表格,每个表格分别使用不同的数据源是很常见的一个需求.假如我们现在有一个需求如下:需要在一个报表同时打印所有 ...

  6. WebGL入门教程(四)-webgl颜色

    前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 颜色效果图: 操作步骤: 1.创建HTML5 canva ...

  7. Spring Cloud 入门教程(四): 分布式环境下自动发现配置服务

    前一章, 我们的Hello world应用服务,通过配置服务器Config Server获取到了我们配置的hello信息“hello world”. 但自己的配置文件中必须配置config serve ...

  8. Golang入门教程(十四)结构体和类详解

    golang中并没有明确的面向对象的说法,实在要扯上的话,可以将struct比作其它语言中的class. 类声明 type Book struct { Title string Author stri ...

  9. Golang入门教程(九)复合数据类型使用案例二

    参考:http://www.runoob.com/go/go-slice.html 目录 切片 字典(map) 函数(func) 接口(interface) 通道(chan) 四.切片(Slice) ...

随机推荐

  1. MT【276】正切的半角公式

    若$\Delta ABC$满足:$\tan\dfrac{A}{2}\cdot\tan\dfrac{C}{2}=\dfrac{1}{3},b=\dfrac{4}{3}a$,则$\sin B=$_____ ...

  2. 「CF838B」 Diverging Directions

    B. Diverging Directions 题意 给出一个n个点2n-2条边的有向图.n-1条指向远离根方向的边形成一棵树,还有n-1条从非根节点指向根节点的边. q次操作,1修改第x条边权值为y ...

  3. zabbix 自动发现端口并添加监控设置

    自动发现端口并添加监控设置UserParameter=net.listen.discovery,sudo /etc/zabbix/scripts/discovery_listport.sh #!/bi ...

  4. windows7安装docker

    因为本机已经安装了git,所以这里取消勾选 配置环境变量 进入到D:\DockerToolbox 将D:\DockerToolbox下的boot2docker.iso 复制到C:\Users\my\. ...

  5. LOJ#6285. 数列分块入门 9

    有点难..... 要求区间众数,所以我可以先把区间分块,然后我预处理出从第 i 块到第 j 块的众数,用dp[i][j]记录下来. 因为需要知道众数的num值, 所以我可以用一个vector来保存每个 ...

  6. OO第三阶段纪实

    $0 写在前面 万里长征已过大半,即将迎来胜利的曙光.一路走来,经历过种种艰难,体会颇深.希望能记录下这篇博文,来总结这一个月来的收获与感悟. $1 规格化设计的发展历史 上世纪50年代,软件伴随着第 ...

  7. ecplise 正则替换技巧

    ctrl+f : ctrl+h: 例: 替换 (String)object1.getAttribute("X") (String)object2.getAttribute(&quo ...

  8. JS小积累(一)— 判断在线离线

    JS小积累-判断在线离线 作者: 狐狸家的鱼 Github: 八至 if(window.navigator.onLine==true){ console.log('online'); ... } el ...

  9. java面试——jvm

    背景:用来总结java面试过程中与jvm相关的问题. 垃圾回收以及优化总结 <JVM 垃圾回收器工作原理及使用实例介绍> 介绍常用的垃圾回收算法,垃圾收集器,垃圾收集器相关的调试参数. J ...

  10. Ubuntu下MySQL报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    在Ubuntu下 想要登录mysql数据库 root@JD:~# mysql -uroot -p 报错 ERROR 1045 (28000): Access denied for user 'root ...