一、变量相关

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的值了?达不到交换的目的。所以我查了一些资料如下:

http://stackoverflow.com/questions/35951423/simultaneous-variable-assignment-in-go-different-from-individual-variable-assign

大概结论就是,这个赋值操作可以看成一个原子操作。

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语言变量和常量的更多相关文章

  1. Go语言-变量和常量

    我们在这里需要优先说明的是用于声明变量的关键字var,以及用于声明常量的关键字const.要知道,绝大多数的数据类型的值都可以被赋给一个变量,包括函数.而常量则不同,它只能被赋予基本数据类型的值本身. ...

  2. C语言变量和常量

    常量 在程序执行过程中,其值不能被改变 常量一般出现在表达式或者赋值语句 利用const 修饰的变量为常量,不可修改 利用define定义的一般为常量,定义时候不需要分号 利用extern修饰的量知识 ...

  3. go语言-变量与常量

    变量 一.变量注意事项 变量名首字母大写,可以被其他包访问调用(公有),变量名首字母小写,其他包不能访问和调用(私有) 在同一个域里一个变量只能定义一次,不可重复定义 二.变量的声明的种方式 1.先声 ...

  4. Go 语言变量、常量

    变量 第一种,指定变量类型,声明后若不赋值,使用默认值. var v_name v_type v_name = value 第二种,根据值自行判定变量类型. var v_name = value 第三 ...

  5. [C语言]变量VS常量

    -------------------------------------------------------------------------------------------- 1. 固定不变 ...

  6. C语言基础学习基本数据类型-变量和常量

    变量和常量 什么是变量和常量?有些数据在程序运行前就预先设定,并在运行过程中不发生变化,称之为常量:有些数据在程序运行中可能发生变化或被赋值,称之为变量. 使用变量前必须先声明一个变量.变量定义的语法 ...

  7. Swift语言指南(一)--语言基础之常量和变量

    原文:Swift语言指南(一)--语言基础之常量和变量 Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swif ...

  8. Go语言基础之变量和常量

    Go语言基础之变量和常量 变量和常量是编程中必不可少的部分,也是很好理解的一部分. 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语 ...

  9. Go语言【第三篇】:Go变量和常量

    Go语言变量 变量来源于数学,是计算机语言中能存储计算结果或能表示值抽象概念.变量可以通过变量名访问.Go语言变量名由字母.数字.下划线组成,其中首字母不能为数字,声明变量的一般形式是使用var关键字 ...

随机推荐

  1. python redis存入字典序列化存储

    在python中通过redis hset存储字典时,必须主动把字典通过json.dumps()序列化为字符串后再存储, 不然hget获取后将无法通过json.loads()反序列化为字典 序列化存储 ...

  2. ASP.NET Core MVC之ViewComponents(视图组件)知多少?

    前言 大概一个来星期未更新博客了,久违了各位,关于SQL Server性能优化会和ASP.NET Core MVC穿插来讲,如果你希望我分享哪些内容可以在评论下方提出来,我会筛选并看看技术文档来对你的 ...

  3. .Net Core 在 Linux-Centos上的部署实战教程(一)

    pa我是在VS2017上写好项目然后来部署的,我的宗旨能截图就少BB 服务器系统: Asp.Net Core版本: 1.往服务器安装.net core 2.1 https://www.microsof ...

  4. BZOJ1969 航线规划

    给定一个无向图,每次删除一条边,求每次有多少关键边.一条边是关键边,当且仅当从1到n的所有路径都包含这条边.所有时刻图都联通. 考虑倒着做.相当于给一棵树,每次加一条边,这样树上这条边的两个端点间的路 ...

  5. 网工的Linux系统学习历程

    偶遇篇作为一名通过思科CCNP认证的网络工程师,专注于网络技术.但在日常的工作中,难免不接触到服务器,对于大多数服务器来说,鉴于稳定性等因素的考虑,基本使用的都是Linux系统,包括RHEL.Cent ...

  6. openstack-KVM-Network

    一.网络配置 1.查看网卡信息: lspci | grep Ethernet ethtool -i eth0 (qemu) info network virsh qemu-monitor-comman ...

  7. Django之ORM操作(聚合 分组、F Q)

    Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作.   键的名 ...

  8. 软工网络15团队作业7——Alpha冲刺之事后诸葛亮

    Deadline: 2018-5-16 22:00PM,以博客提交至班级博客时间为准 事后诸葛亮分析 Alpha冲刺,很多同学经历了"Learning by doing"的学一门新 ...

  9. JavaScript实现文字跑马灯

    其实实现文字的跑马灯和实现图片轮播的原理是一样的. 下面是我自己实现的,文字的位置可以随便更改,效果不会变,文字的内容可以通过ajax获取,同时,可以直接用Jquery改写一下,很方便. <!D ...

  10. Nginx会话保持之nginx-sticky-module模块

    Nginx会话保持之nginx-sticky-module模块 - 天行健,君子以自强不息:地势坤,君子以厚德载物. - CSDN博客https://blog.csdn.net/huangjinjin ...