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关键字
最新文章
- Python目录
- matlab 有趣小细节
- 一个简单的app自动登录Python脚本案例
- Xcode 添加类前缀
- 7.$a = 'abcdef'; 请取出$a的值并打印出第一个字母
- JS_01_入门学习
- SQLite 字段类型
- LintCode ";Copy Books";
- jquery的end(),addBack()方法example
- Web开发需要关注的技术细节
- 转: linux下错误的捕获:errno和strerror的使用
- [Swust OJ 166]--方程的解数(hash法)
- Linq标准查询操作符
- .NET Core:使用ImageSharp跨平台处理图像
- Https背景与证书在spring boot项目中的使用
- PhP数据库 Mysql dos命令
- jQuery时间轴插件timeline.js
- 一、Git简介
- [NOIP2017] 宝藏 【树形DP】【状压DP】
- “Error:(1, 1) java: 非法字符: '\ufeff'”错误解决办法
热门文章
- django url之path默认参数
- (第十三周)Final阶段用户调查报告
- Python删除list里面的重复元素的俩种方法
- 解决object at 0x01DB75F0
- 现有n 个乱序数,都大于 1000 ,让取排行榜前十,时间复杂度为o(n), top10, 或者 topK,应用场景榜单Top:10,堆实现Top k
- Django之Django终端打印SQL语句
- 百度地图开发者API学习笔记二
- 墨者学院——密码学加解密实训(Base64转义)
- C# 和 c++的语法不同点
- React Native之code-push的热更新(ios android)