Golang教程:变量
声明单一变量
声明一个变量的语法为:var name type,例如
package main
import "fmt"
func main() {
var age int // variable declaration
fmt.Println("my age is", age)
}
语句 var age int 声明了一个类型为 int,名称为 age 的变量。在这里我们没有给它赋任何值。如果一个变量没有被赋予任何值,Go 会自动将这个变量初始化为其类型的 0值,比如这里的 age 将被赋值为 0。运行这个程序,将得到如下输出:
my age is
一个变量可以被赋予其类型的任何值。例如,在上例中,age 可以被赋予任何整型值:
package main
import "fmt"
func main() {
var age int // variable declaration
fmt.Println("my age is ", age)
age = //assignment
fmt.Println("my age is", age)
age = //assignment
fmt.Println("my new age is", age)
}
输出如下:
my age is
my age is
my new age is
声明一个带初值的变量
在声明变量时可以指定其初始值。
声明一个带初值的变量的语法为:var name type = initialvalue,例如:
package main
import "fmt"
func main() {
var age int = // variable declaration with initial value
fmt.Println("my age is", age)
}
在上面的程序中, age 是一个 int 型的变量,初始值为 29。运行上面的程序,输出如下。可以看到 age 的初始值确实为29。
my age is
类型推导
如果声明一个变量时提供了初始值,Go可以根据该初始值来自动推导变量的类型。因此如果声明变量时提供了初始值,就可以不必指定其类型。
也就是说,如果声明变量的形式为:var name = initialvalue,Go将根据 initialvalue 自动推导变量 name 的类型。
在下面的例子中,你可以看到声明变量 age 时并没有指定其类型。因为 age 的初值为 29,Go 自动推断其类型为 int。
package main
import "fmt"
func main() {
var age = // type will be inferred
fmt.Println("my age is", age)
}
多变量声明
多个变量可以在一条语句中声明。
多变量声明的语法为:var name1, name2 type = initialvalue1, initialvalue2,例如:
package main
import "fmt"
func main() {
var width, height int = , //declaring multiple variables
fmt.Println("width is", width, "height is", height)
}
如果指定了初始值,则 type 可以省略。下面的程序利用类型推导声明了多个变量:
package main
import "fmt"
func main() {
var width, height = , //"int" is dropped
fmt.Println("width is", width, "height is", height)
}
可以看到输出结果为:
width is height is
正如你猜想的那样,如果不指定 width 和 height 的初值,它们将自动被赋值为 0,也就是说它们将以 0 作为初值:
package main
import "fmt"
func main() {
var width, height int
fmt.Println("width is", width, "height is", height)
width =
height =
fmt.Println("new width is", width, "new height is ", height)
}
将会输出:
width is height is
new width is new height is
有些时候我们需要在一条语句中声明多个不同类型的变量。我们可以使用下面的语法达到此目的:
var (
name1 = initialvalue1,
name2 = initialvalue2
)
下面的程序就用上面的语法声明了多个不同类型的变量:
package main
import "fmt"
func main() {
var (
name = "naveen"
age =
height int
)
fmt.Println("my name is", name, ", age is", age, "and height is", height)
}
这里我们声明了一个字符串类型的变量 name,以及两个整型的变量 age 和 height。(我们将在下一篇教程中讨论 Golang 中可用的类型)。上面的程序将会产生如下输出:
my name is naveen , age is and height is
速记声明
Go 提供了另一种简洁的声明变量的方式。这种方式称为速记声明(shorthand declaratiion)。速记声明使用 := 操作符来声明变量。
速记声明的语法为:name := initialvalue,例如:
package main
import "fmt"
func main() {
name, age := "naveen", //short hand declaration
fmt.Println("my name is", name, "age is", age)
}
上面的程序,输出如下:
my name is naveen age is
记声明要求必须给声明的每一个变量都提供初始值。下面的 程序将会报错:assignment count mismatch: 2 = 1。这是因为 没有给 age 提供初始值。
package main
import "fmt"
func main() {
name, age := "naveen" //error
fmt.Println("my name is", name, "age is", age)
}
速记声明要求在 := 的左边必须至少有一个变量是新声明的。
一个变量不能被赋予与其类型不同的值。下面的程序将报错:cannot use "naveen" (type string) as type int in assignment。这是因为 age 被声明为 int 类型,但是我们试图将 string 类型的值赋给它。
package main
func main() {
age := // age is int
age = "naveen" // error since we are trying to assign a string to a variable of type int
}
Golang教程:变量的更多相关文章
- linux上java和golang环境变量的设置
JAVA环境变量 (1).打开~/.bashrc完成环境配置( 作用类似于/etc/bashrc, 只是针对用户自己而言,不对其他用户生效.) 文件追加 expo ...
- Golang的变量定义及使用案例
Golang的变量定义及使用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.变量的定义 package main import "fmt" func m ...
- Bash简明教程--变量
1. 前言 Bash是一门流行在*nix系统下的脚本语言.作为一门脚本语言,变量是一门语言的基本要素,在这篇教程中,我们将学习Bash中的变量是怎么表示的,以及变量相关的一些语法规则. 2. Bash ...
- Golang之变量去哪儿
目录 什么是逃逸分析 为什么要逃逸分析 逃逸分析是怎么完成的 逃逸分析实例 总结 参考资料 写过C/C++的同学都知道,调用著名的malloc和new函数可以在堆上分配一块内存,这块内存的使用和销毁的 ...
- [golang note] 变量常量
变量 • 变量声明 √ golang变量声明的关键字为var. √ golang变量声明时类型信息放置在变量名之后. ▶ 单个变量声明 ▪ 语法如下 var name type ▪ 示例如下 var ...
- Golang教程:Map
什么是 map? Map 是 Go 中的内置类型,它将键与值绑定到一起.可以通过键获取相应的值. 如何创建 map? 可以通过将键和值的类型传递给内置函数 make 来创建一个 map.语法为:mak ...
- Golang教程:数组和切片
数组 数组是类型相同的元素的集合.例如,整数 5, 8, 9, 79, 76 的集合就构成了一个数组.Go不允许在数组中混合使用不同类型的元素(比如整数和字符串). 声明 var variable_n ...
- Golang教程:包
什么是包?为什么使用包? 到目前为止我们见到的 Go 程序都只有一个文件,文件中包含了一个main函数和几个其他函数.在实际中这种将所有代码都放在一个文件里的组织方式是不可行的.这样的组织方式使得代码 ...
- Golang教程:常量
定义常量 常量(constant)表示固定的值,比如:5,-89,"I love Go",67.89 等等. 考虑如下程序: var b string = "I love ...
随机推荐
- EF6使用Mysql的一些问题(code first)
首先,添加nuget Mysql.Data ; Mysql.Data.Entity ; 添加配置文件connectionStrings <add name="conn" co ...
- leetcode 字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = "leetcode" 返回 0. s = "loveleetcod ...
- chipmunk 物理引擎的基本概念和基本用法
chipmunk是一个开源2D物理引擎, 项目主页:http://code.google.com/p/chipmunk-physics/ 工作需要研究了一下,这个引擎的资料还是不多,我阅读了所有的文档 ...
- 爬虫开发10.scrapy框架之日志等级和请求传参
今日概要 日志等级 请求传参 今日详情 一.Scrapy的日志等级 - 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy的日志信息. - 日志 ...
- 生产者消费者模式-Java实现
感知阶段 随着软件业的发展,互联网用户的日渐增多,并发这门艺术的兴起似乎是那么合情合理.每日PV十多亿的淘宝,处理并发的手段可谓是业界一流.用户访问淘宝首页的平均等待时间只有区区几秒,但是服务器所处理 ...
- 【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由E ...
- Ubuntu下Nginx安装
1.1 安装Nginx $sudo apt-get install nginx Ubuntu安装之后的文件结构大致为: 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/ ...
- 【医学影像】《Identifying Medical Diagnoses and Treatable Diseases by Image-Based Deep Learning》论文笔记
这篇论文的作者是张康教授为首的团队,联合国内外众多医院及科研机构,合力完成,最后发表在cell上,实至名归. 从方法的角度上来说,与上一篇博客中的论文很相似,采用的都是InceptionV3模型,同时 ...
- train loss与test loss结果分析
train loss 不断下降,test loss不断下降,说明网络仍在学习; train loss 不断下降,test loss趋于不变,说明网络过拟合; train loss 趋于不变,test ...
- Python解释器的配置
1.准备工作 安装好Pycharm2017版本 电脑上安装好Python解释器 2.本地解释器配置 配置本地解释器的步骤相对简洁直观: (1)单击工具栏中的设置按钮. (2)在Settings/Pre ...