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

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

变量

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

var name = "jay"

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

var name string = "jay"

var age int  // 你也可以只定义不赋值

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

var age = 12

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

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

var name  // 定义变量时,既不赋值也不指定类型,错误

var str = 'hello,world'  // 字符串不可以使用单引号,单引号在 go 中表示一个字符

批量声明

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

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

短变量声明

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

package main

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

匿名变量

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

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

常量

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

const pi = 3.1415
const 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到它的点吗?

就这样。

Go语言的变量和常量(三)的更多相关文章

  1. Go语言 2 变量、常量和数据类型

    文章由作者马志国在博客园的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/ Go学习群:415660935 2.1 变量 变量是对一块内存空间的命名,程序可以通 ...

  2. C语言之变量与常量的介绍

    一 标示符 标识符:可以理解为是变量名.名字常量表示法的常量名,但是不仅限于这两个 命名规范: 1.起名要有意义,基本要做到一看名字就知道是用来干嘛的(要求你遵守,但不会报错,希望能够养成这样的好习惯 ...

  3. go语言学习——变量、常量、循环、条件、switch、数组和切片

    1.变量 package main import "fmt" func main() { 个或者多个变量. var a string = "initial" f ...

  4. c语言的变量,常量及作用域等

    1.const定义常量 在C语言中,const可以用来定义的一个常量,在变量名前加上const即可. int const a: 定义了一个a的整数常量,且a的值不能被修改.如果要修改a的值,有以下两种 ...

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

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

  6. C语言入门教程-(4)常量和变量

    1.常量和变量的概念 程序执行过程中其值不能发生改变的量叫做常量,其值能发生改变的量叫做变量.常量可以直接使用,而变量则必须先定义后才能使用,否则编译器会报错. 2.常量和变量的命名规范 在介绍常量和 ...

  7. Java学习笔记三:Java的变量、常量、变量的类型及使用规则

    Java的变量.常量.变量的类型及使用规则 每一种语言都有一些具有特殊用途的词,Java也不例外,它们被称为关键字.关键字对 Java 的编译器有着特殊的意义. 一:Java中的关键字: 注:Java ...

  8. Go语言基础之1--标识符、关键字、变量和常量、数据类型、Go的基本程序结构、Golang的特性

    一.前言 当我们项目较为简单时,我们在src目录下新建一个该项目目录,里面存放源码文件即可,见下图: 当我们一个项目较为复杂时,我们可以在src目录下新建一个该项目目录,在针对该项目不同模块创建不同目 ...

  9. Java第三天【变量、常量、数据类型】

    学习Java第三天!加油!请帖友看看有和不足的地方,和在下说一下,谢谢! 变量 变量(variable): 1.变量的本质就是代表"可操作的存储空间",空间位置是确定的,蛋里面放置 ...

随机推荐

  1. CSS定位——浮动定位

    CSS定位机制Ⅱ——浮动定位 float属性:进行浮动定位   left,right clear属性:清除浮动   left,right,both  ㈠  float属性 1.概述 ⑴div实现横向多 ...

  2. python 文件定位

    tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后. seek(offset [,from])方法改变当前文件的位置.Offset变量表示要移动的字节数.F ...

  3. Word:转换PDF

    本文适用于Word 2007 + Windows 7,造冰箱的大熊猫@cnblogs 2018/8/3 一.Word文档转PDF文档 把Word文档转换为PDF,有两个免费解决方案 1.Microso ...

  4. AngularJS基础语法

    1.ng-app 决定了angularjs的作用域范围,你可以如下使用: <html ng-app> … </html> 来让angularjs渲染整个页面,也可以使用 < ...

  5. Codeforces 1213E Two Small Strings

    cf题面 中文题意 给个n,再给两个长度为2的字符串,要求构造一个长度为\(3n\)的字符串,a.b.c三个字母各n个,且构造出的字符串子串中不能出现给定的两个字符串.如果不存在这样的字符串,就输出N ...

  6. python实战,

    1.把日志状态码为200得请求记录下来 记录信息(ip,访问时间,请求资源) 封装函数再次调用,健壮性try except #coding=utf-8import redef  aclog(path, ...

  7. c++匿名函数精简写法

    main.cpp: #include<stdio.h> #include<functional> #include<unistd.h> std::function& ...

  8. legend3---laravel中获取控制器名称和方法名称

    legend3---laravel中获取控制器名称和方法名称 一.总结 一句话总结: \Route::current()->getActionName();会有完整的当前控制器名和方法名 pub ...

  9. JSP——JSTL定制标签 - 递归标签显示属性结构

    编写定制标签分为三个步骤:编写标签处理器.配置标签.使用标签. 1.标签处理器 标签处理器和标签是一一对应的关系 package com.oolong.utils.customtags;   impo ...

  10. 验证TXT解析的正确性

    需要用到TXT解析,不同于CNAME和A解析,可以用PING命令验证,要验证TXT解析需要用到如下命令 nslookup -q=TXT txtdemo.lei.cool 8.8.8.8 输出内容如下 ...