Golang入门教程(四)变量声明
Go 语言变量名由字母、数字、下划线组成,其中首个字母不能为数字。
一、Go的语言结构
1、Go的语言基础部分由这几个部分组成
- 包声明
- 引入包
- 函数
- 变量
- 语句&表达式
- 注释
比如下面这个简单的代码:
func main() {
fmt.Println("第一个程序")
}
需要注意的是,如果想把单独的.go文件作为独立的可执行文件的时候。需要在代码的第一行加上
package main
文件的入口方法为:
func main(){
}
go的语法和c是很像的,但是又没有c那么底层。所以有c基础的人,学习go会特别的快。需要注意的一点是:
go声明变量的时候是把变量类型放在变量的后面的,如下所示:
var userName string = "Tinywan"
go也可以不指定数据类型,但是必须要赋值。如果不赋值,自动类型检查就无法起到作用,如下所示:
var userName = "Tinywan"
// 或者
var userName = ""
附一个空格值给变量也是可以的,就是不能不赋值,也不能为null。而且在go中也没有null的概念,取而代之的是nil:意思为0、无的意思。(Lua也是这样子的)
还可以使用默认值,如下所示:
var res bool
二、GO语言变量声明的方式
1、指定变量类型,声明后如果不做赋值,那么使用默认值
//没有进行赋值,但是指明了是什么类型、go会自动加上空值。
var a string
2、不指定变量类型,需要进行赋值操作。
//可以不指定变量类型,通过变量值,go会自行判断该变量的类型。
var a=1
3、不使用var关键字,直接:=对变量进行赋值操作。
//这种方式是省略了var,但是这种方式能对新的变量使用,对已经声明的变量使用会报错。
a:=1
注意:三种变量的声明形式的作用都是一样的,要么赋值可自动判断其类型,要么不赋值,指定变量类型,就这么两点。还需要注意的是,go的变量是如果被声明了,那么必须使用,不然会报错,如果不想使用可以加上_=varName,表示为已抛弃的变量。
//已声明,但未使用
var a=1
//标识为已抛弃的变量。
_=a
4、go的变量在已经被声明后,是不能使用:=再次赋值的。
//这样是错误的
var a=1
a:=2
但是可以使用=为已声明的变量赋新的值。
//这样做是可以的。
var a=1
a=2
而且如果变量值没被使用,那么请加上以抛弃的标识。
_=a
5、go可以直接声明多个变量,通过函数可以返回多个返回值,比如:
//一次性声明所有的变量类型为string类型
var name1,name2,name3 string //函数返回多个返回值
func getName(name1,name2,name3,name4){
return "aa","bb","cc","dd"
} //返回多个返回的值的函数需要用多个变量进行接受
var a, b, c, d = getName()
6、go可使用var关键字声明全局变量,但是:=这种方式是不能用在全局变量中的。:=只能用在函数体内部。
var (
a int
b bool
xx,yy,dd string="xx","yy","dd"
//这里省略变量类型也是可以的。
zz,aa="zz","aa"
)
比如像这样,这样做会报语法错误
var(
a:=1
)
syntax error: unexpected :=
Golang入门教程(四)变量声明的更多相关文章
- Elasticsearch入门教程(四):Elasticsearch文档CURD
原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...
- RabbitMQ入门教程(四):工作队列(Work Queues)
原文:RabbitMQ入门教程(四):工作队列(Work Queues) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...
- 无废话ExtJs 入门教程四[表单:FormPanel]
无废话ExtJs 入门教程四[表单:FormPanel] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在窗体里加了个表单.如下所示代码区的第28行位置,items:form. ...
- PySide——Python图形化界面入门教程(四)
PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your Own Signals and Slots 翻译自:http://pythoncentral ...
- JasperReports入门教程(四):多数据源
JasperReports入门教程(四):多数据源 背景 在报表使用中,一个页面需要打印多个表格,每个表格分别使用不同的数据源是很常见的一个需求.假如我们现在有一个需求如下:需要在一个报表同时打印所有 ...
- WebGL入门教程(四)-webgl颜色
前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 颜色效果图: 操作步骤: 1.创建HTML5 canva ...
- Spring Cloud 入门教程(四): 分布式环境下自动发现配置服务
前一章, 我们的Hello world应用服务,通过配置服务器Config Server获取到了我们配置的hello信息“hello world”. 但自己的配置文件中必须配置config serve ...
- Golang入门教程(十四)结构体和类详解
golang中并没有明确的面向对象的说法,实在要扯上的话,可以将struct比作其它语言中的class. 类声明 type Book struct { Title string Author stri ...
- Golang入门教程(九)复合数据类型使用案例二
参考:http://www.runoob.com/go/go-slice.html 目录 切片 字典(map) 函数(func) 接口(interface) 通道(chan) 四.切片(Slice) ...
随机推荐
- Codeforces 346D Robot Control(01BFS)
题意 有一个 \(N\) 个点, \(M\) 条边的有向图, 初始有一个机器人在 \(1\) 号点. 每个时刻, 这个机器人会随机选择一条从该点出发地边并通过.当机器人到达点 \(N\) 时, 它就会 ...
- 扩展资源服务器解决oauth2 性能瓶颈
OAuth用户携带token 请求资源服务器资源服务器拦截器 携带token 去认证服务器 调用tokenstore 对token 合法性校验资源服务器拿到token,默认只会含有用户名信息通过用户名 ...
- hexo+next主题目录解析
默认目录结构: . ├── .deploy ├── public ├── scaffolds ├── scripts ├── source | ├── _drafts | └── _posts ├── ...
- 纯CSS画的基本图形(圆形、三角形、多边形、爱心、八卦等)
1.圆形 .circle { width: 100px; height: 100px; background: red; border-radius: 50px; } 2.椭圆 .oval { wid ...
- PHP-FPM安装报错解决
PHP源码安装 setenforce 0--------------------------------------------------------------------安装php时的报错che ...
- NOIp2018 游记
作为一名蒟蒻,对于NOIp当然是不抱什么希望.所以就只能在比赛中吸取经验咯... Day0 害怕书到用时方恨少,疯狂打板子(玩电脑) Day1 来到考场了,发现键盘空格按不起,觉得非常尴尬,然后他告诉 ...
- Jupyter-Notebook 删除指定 kernel
原来是Python3+C# 查看列表jupyter kernelspec list 删除指定kernel:jupyter kernelspec remove icsharpkernel 删除成功:(刷 ...
- Educational Codeforces Round 46 C - Covered Points Count
C - Covered Points Count emmm 好像是先离散化一下 注意 R需要+1 这样可以确定端点 emmm 扫描线?瞎搞一下? #include<bits/stdc++.h&g ...
- oath2
最近在补架构师图谱里的内容,OAuth2.0是其中一块,抽空看了几个文章,理解了一下. 不过我感觉多数文章都不是很直观,花费了好久才理解其中的过程,以及为什么要这么设计,也许里面还有一些为什么没搞清楚 ...
- 手把手教你用1行代码实现人脸识别 --Python Face_recognition
环境要求: Ubuntu17.10 Python 2.7.14 环境搭建: 1. 安装 Ubuntu17.10 > 安装步骤在这里 2. 安装 Python2.7.14 (Ubuntu17.10 ...