Go语言变量和常量
一、变量相关
1.变量声明
C# : int a;
Go : var a int; 需要在前面加一个var关键字,后面定义类型
可以使用 var( a int; b string;)减少var
2.变量初始化
var a int = 10 // 正确的使用方式1 var a = 10 // 正确的使用方式2,编译器可以自动推导出v2的类型 a := 10 // 正确的使用方式3,编译器可以自动推导出v3的类型
在:=左侧的变量不应该是已经被声明过的
3.变量赋值
注意:Go语言的新特性 “Simultaneous Assignment” (平行赋值、多重赋值 ......)
a,b = b,a 可以方便的交换两个数的值,之前的其他语言可能都需要加一个temp变量
(对于如和实现的,http://golang.org/ref/spec#Assignments 进行了阐述)
对于这个我其实是有疑问的,就是Go语言是如何实现该功能的?按照我的想法如果是go语言底层也是按照加入一个变量的方式,那么岂不是输出的a和b都是b的值了?达不到交换的目的。所以我查了一些资料如下:
大概结论就是,这个赋值操作可以看成一个原子操作。

4.匿名变量
Go可以定义匿名变量来减少不需要的代码,例如,我只关心Value,不想打印Key的时候可以用“_”代替变量。同理对于有多个返回值的方法,可以用“_”代替我不想要的返回值,这样就减少了变量的定义。
func main(){
x:=make(map[string]int16)
x["apple"] =
x["orange"] =
x["pear"]=
for _,value := range x{
fmt.Println(value);
}
}
二、常量相关
1.字面常量
Go语言的字面常量是无类型的,可以被赋值给任何类型的变量。
例如 AConstNumber 可以赋值给int、float32等类型,但是赋值给string就出错了
package main
import ( "fmt") func main(){
const AConstNumber = -
var x int = AConstNumber
var y float32 = AConstNumber
fmt.Println("x:",x)
fmt.Println("y:",y)
}
2.预定义常量
Go语言预定义了这些常量:true、false和iota。
iota是个什么玩意?
iota比较特殊,可以被认为是一个可被编译器修改的常量,在每一个const关键字出现时被 重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动增1。 (一个计数器?)
例如:
func main(){
const(
a = iota *
b = iota *
c = iota *
)
const(
d = iota *
e = iota *
f = iota *
)
fmt.Println(a) // 打印 0
fmt.Println(b) // 打印 100
fmt.Println(c) // 打印 200
fmt.Println(d) // 打印 0
fmt.Println(e) // 打印 100
fmt.Println(f) // 打印 200
}
所以 iota 这个东西用好了就能当枚举使用了,正好Go语言不支持enum关键字
Go语言变量和常量的更多相关文章
- Go语言-变量和常量
我们在这里需要优先说明的是用于声明变量的关键字var,以及用于声明常量的关键字const.要知道,绝大多数的数据类型的值都可以被赋给一个变量,包括函数.而常量则不同,它只能被赋予基本数据类型的值本身. ...
- C语言变量和常量
常量 在程序执行过程中,其值不能被改变 常量一般出现在表达式或者赋值语句 利用const 修饰的变量为常量,不可修改 利用define定义的一般为常量,定义时候不需要分号 利用extern修饰的量知识 ...
- go语言-变量与常量
变量 一.变量注意事项 变量名首字母大写,可以被其他包访问调用(公有),变量名首字母小写,其他包不能访问和调用(私有) 在同一个域里一个变量只能定义一次,不可重复定义 二.变量的声明的种方式 1.先声 ...
- Go 语言变量、常量
变量 第一种,指定变量类型,声明后若不赋值,使用默认值. var v_name v_type v_name = value 第二种,根据值自行判定变量类型. var v_name = value 第三 ...
- [C语言]变量VS常量
-------------------------------------------------------------------------------------------- 1. 固定不变 ...
- C语言基础学习基本数据类型-变量和常量
变量和常量 什么是变量和常量?有些数据在程序运行前就预先设定,并在运行过程中不发生变化,称之为常量:有些数据在程序运行中可能发生变化或被赋值,称之为变量. 使用变量前必须先声明一个变量.变量定义的语法 ...
- Swift语言指南(一)--语言基础之常量和变量
原文:Swift语言指南(一)--语言基础之常量和变量 Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swif ...
- Go语言基础之变量和常量
Go语言基础之变量和常量 变量和常量是编程中必不可少的部分,也是很好理解的一部分. 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语 ...
- Go语言【第三篇】:Go变量和常量
Go语言变量 变量来源于数学,是计算机语言中能存储计算结果或能表示值抽象概念.变量可以通过变量名访问.Go语言变量名由字母.数字.下划线组成,其中首字母不能为数字,声明变量的一般形式是使用var关键字 ...
随机推荐
- [翻译] 使用 Visual Studio 2019 来提高每个开发人员的工作效率
[翻译] 使用 Visual Studio 2019 来提高每个开发人员的工作效率 原文: Making every developer more productive with Visual Stu ...
- Spring Boot 2 (十):Spring Boot 中的响应式编程和 WebFlux 入门
Spring 5.0 中发布了重量级组件 Webflux,拉起了响应式编程的规模使用序幕. WebFlux 使用的场景是异步非阻塞的,使用 Webflux 作为系统解决方案,在大多数场景下可以提高系统 ...
- 传统前端工程使用 Vue 等框架重构的思路
这段时间遇到类似的问题,第一反应便是使用 cli 搭建项目,但是细想一下立马否决了,原因如下: 工程量太大,猴年马月能重构完,此期间原项目还是没有任何变动(如果没人跟你一起同步修改之前老项目的话 无法 ...
- 【开源】微信小程序、小游戏以及 Web 通用 Canvas 渲染引擎 - Cax
Cax 小程序.小游戏以及 Web 通用 Canvas 渲染引擎 Github → https://github.com/dntzhang/cax 点我看看 DEMO 小程序 DEMO 正在审核中敬请 ...
- OSGI 环境搭建
第一步,打开eclipse,新建一个plugin工程,如下图所示 第二步,输入工程的名字,并且在Target Platform中选择an OSGI framework中选中standard,如下图所示 ...
- 第八次oo作业
作业五 作业五是当前最后一次电梯作业,也是我们第一次接触到多线程编程,输入方式也由之前的一次性输入变为了实时输入,其中涉及到大量的同步和冲突,其中学习多线程的使用也花了大量的时间,但总的来说为以后的作 ...
- nginx Location 语法基础知识
URL地址匹配是Nginx配置中最灵活的部分 Location 支持正则表达式匹配,也支持条件匹配,用户可以通过location指令实现Nginx对动丶静态网页的过滤处理. Nginx locatio ...
- Centos7修改系统时区
timedatectl status Local time: 四 2014-12-25 10:52:10 CST Universal time: 四 2014-12-25 02:52:10 UTC R ...
- LookupError: Resource averaged_perceptron_tagger not found. Please use the NLTK Downloader to obtain the resource:
命令行执行 import nltk nltk.download('averaged_perceptron_tagger') 完事
- 如何实现用将富文本编辑器内容保存为txt文件并展示
1.实现思路 创建一个xx.txt文件,存放于项目路径下 用文件流去读取文件内容并将读取的内容存放到页面的富文本编辑器框内 富文本编辑框内容改变后,保存时用文件流的方式保存到xx.txt文件中 提示: ...