博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言的变量和常量(三)
阅读量:4884 次
发布时间:2019-06-11

本文共 1631 字,大约阅读时间需要 5 分钟。

我想吐槽下网上的很多所谓的“零基础教程”,因为那根本不算零基础。就拿语言教程来说,一上来就说怎么定义变量的怎么算零基础呢?零基础应该是先告诉你啥叫变量。

所以我从不起零基础的标题。我这也不是教程,只是我的一个记录。当然我会做笔记很仔细。

 

变量

go语言的变量定义跟JavaScript很像,也是用 var:

var name = "jay"

 

但它也不同,作为静态语言,他可以定义变量的同时指定变量类型:

var name string = "jay" var age int  // 你也可以只定义不赋值

 

如果你定义变量时直接赋值而没有指定类型,会进行类型推断的,所以这样是错的:

var age = 12age = "20"  // 因为age初始化时被推断为int型,所以不可以变为string型。(注意:赋值操作要在函数里执行。)

 

除此之外,以下也是错误的,红色警示下

var name  // 定义变量时,既不赋值也不指定类型,错误var str = 'hello,world'  // 字符串不可以使用单引号,单引号在 go 中表示一个字符

 

批量声明

go 支持批量定义变量,两种方式:

// 方式一var age,name = 12,"jay"// 方式二var (    a = 1    b = "hello")

 

短变量声明

函数内部,你可以使用一种更简单的方式定义变量:

package mainimport (    "fmt")// 全局变量mvar m = 1func main() {    n := 2    m := 3  // 函数内部可使用更简单的变量定义方式    fmt.Println(m, n)}

 

匿名变量

匿名变量用一个下划线 表示,多用于占位,表示忽略值。它不占用命名空间,不会分配内存,所以匿名变量之间也不存在重复声明:

var a,_ = 1,2var _,b = 3,4 // _ 不会报重复声明的错误func main() {    fmt.Println(a) //1    fmt.Println(b) //4    fmt.Print(_) // 报错,因为 _ 不是一个值}

 

常量

go 中的常量跟 es6 中的也像,也是使用 const :

const pi = 3.1415const e = 2.7182

常量被定义时必须赋值,并且后续不能再改变常量的值。

 

多个常量一起定义:

const (    pi = 3.1415    e = 2.7182)

 

const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:

const(    a = 10    b    c) 等同于:
const(    a = 10    b = 10    c = 10 )

a,b,c的值都是10

 

iota

这是一个有趣的东西。iota 是 go 语言的常量计数器,只能在常量的表达式中使用。

iota 在 const 关键字出现时将被重置为 0。const 中每新增一行常量声明将使 iota 计数一次。

来看几个例子:

const(    a = iota // 0    b        // 1    c        // 2)
const(    a = iota  // 0    b = 100   // 100    c = iota  // 2    d         // 3 )
const(    a, b = iota + 1, iota + 2  // 1,2    c, d                       // 2,3    e, f                       // 3,4 )

你有get到它的点吗?

 

就这样。

转载于:https://www.cnblogs.com/wjaaron/p/11437441.html

你可能感兴趣的文章
redhat6.7 yum网络源配置
查看>>
百度网络监控实战:NetRadar横空出世(下)
查看>>
javascript往textarea追加内容
查看>>
WeX5触发事件
查看>>
【python学习】使用Python写一个贪吃蛇
查看>>
jquery 图片放大镜,草稿版
查看>>
二、深度解析HTML5之视频播放和音频播放
查看>>
C#Winform的DEV下拉下拉控件介绍
查看>>
english Paper about abortion
查看>>
android仿漫画源码、抽奖转盘、Google相册、动画源码等
查看>>
IbatisNet配置文件
查看>>
git形成本地仓库并从远处url拉取
查看>>
获取xml字符串中的属性值
查看>>
MySQL必知必会(数据分组,Group by和Having子句, Select子句的顺序)
查看>>
通过wireshark抓包来讲解HTTP中Connection: keep-alive头部的作用
查看>>
2015长春 HDU 5531 Rebuild
查看>>
Android之四种加载方式
查看>>
团队项目3.0
查看>>
【js】操作checkbox radio 的操作总结
查看>>
mysql复制表(同一数据库,不同数据库)
查看>>