go变量和声明

这将是美好的开始和结束,通过写下x = 4,我们查看变量,可以说声明了一个变量并赋值,但是很不幸,go语言变量声明和赋值比这更复杂。通过学习一些简单的示例开始学习变量声明和赋值。然后在下一章,当我们创建并使用结构体时,我们会深入学习。尽管如此,你需要花一些时间去适应。

你可能会惊讶,为什么会如此复杂,让我们以一些例子开始学习。

在go中最直接的方式去声明变量并赋值也是最繁琐的:

package main

import (
"fmt"
)
func main() {
var power int
power = 9000
fmt.Printf("It's over %d\n", power)
}

在这里我们声明了一个int型变量power。默认情况下,go会给power赋一个0值。整型赋0,布尔型赋false,字符串型赋""等。然后,我们将9000赋值给变量power。我们也可以将2行代码合并成一行:

var power int = 9000

虽然需要输入很多。go有一种方便简洁的变量声明操作符::=,go可以推断变量的类型:

power := 9000

这里有一个简洁的写法,通过函数也能正常工作:

func main() {
power := getPower()
}
func getPower() int {
return 9001
}

这里需要谨记,:=用于声明一个变量并给变量赋值。为什么会这样?因为一个变量不能被声明2次(不在相同的代码范围)。如果你试着运行下面代码,你将会得到一个错误信息。

func main() {
power := 9000
fmt.Printf("It's over %d\n", power)
// COMPILER ERROR:
// no new variables on left side of :=
power := 9001
fmt.Printf("It's also over %d\n", power)
}

编译器会提示:=左边不是一个新变量。这意味着当我们第一次声明变量时,我们使用:=。但是在随后的赋值,我们要使用=。这有很多意义,但这也随时提醒着你何时该使用:==

如果你仔细阅读错误信息,你将发现有多个变量。因为go支持多个变量同时赋值(使用=或者:=):

func main() {
name, power := "Goku", 9000
fmt.Printf("%s's power is over %d\n", name, power)
}

另外,如果一个变量是新变量也可以使用:=进行赋值。例如:

func main() {
power := 1000
fmt.Printf("default power is %d\n", power) name, power := "Goku", 9000
fmt.Printf("%s's power is over %d\n", name, power)
}

尽管变量power使用了:=,但是编译器不会在第2次使用:=时报错,因为这里有一个变量name,这是一个新的变量,允许使用:=。但是你不能改变power的类型。它已经被声明成一个整型,只能赋值整数。

现在,需要知道的最后一件事是,类似包导入,go程序中不能存在未使用的变量,例如:

func main() {
name, power := "Goku", 1000
fmt.Printf("default power is %d\n", power)
}

这段代码不能编译,因为变量name已经声明,但是没有被使用。类似未使用的导入包,可能这会让你有点失望,但是总的来看,我认为这是为了让代码更加的简洁和具有可读性。

接下来不在介绍关于变量的声明和赋值相关内容了。现在,你只需要记住使用var NAME TYPE声明一个变量,并且变量的初始值为它相应类型的零值,使用NAME := VALUE声明一个变量并赋值,使用NAME = VALUE去给已经声明过的变量赋值。

本文转自:http://codingdict.com/article/22520

go变量和声明的更多相关文章

  1. MFC中成员变量的声明顺序与析构顺序

    第一次用博客,第一篇随笔,就写今天遇到的一个问题吧. 在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构.未在其他模式下测试. cla ...

  2. javascript中的函数式声明与变量式声明

    观察下面两段代码,试写出hello('word');的运行结果: // 变量式声明 function hello(msg){ alert(msg); var msg = function(){}; a ...

  3. 今天第一次接触到typescript,看了第一个知识点就是变量的声明,来回忆回忆,做做笔记

    以前只用过JavaScript原生写网站特效,今天还是第一次听说typescript的,然后看了一下它的基本知识,感觉很像Java,真的太像了,但是又有不同点.很让我惊奇看到的第一个知识点就和以前不同 ...

  4. Swift入门学习之一常量,变量和声明

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...

  5. Robot Framework--07 变量的声明、赋值及其使用

    转自:http://blog.csdn.net/tulituqi/article/details/7984642 一.变量的声明 1.变量标识符 每个变量都可以用  变量标识符{变量名}    来进行 ...

  6. 【转】变量的声明和定义,从C到编译原理到C++,再到Java

    基础学了太久,时间一长有些东西就可能记得不太清楚,俗话说得好,"好记性不如烂笔头",所以把基础中的基础-变量的声明和定义,从C到编译原理到C++,再到Java用烂笔头记录下来 最早 ...

  7. shell与变量的声明的操作

    1.给命令起别名:alias 执行下面命令后,可以使用dir代替ls –l 命令,显示目录中的文件详细信息: 还可以用一个别名表示几个命令 的结合: 2.ps:显示当前登录会话的所有活动进程: 3.更 ...

  8. C++ 变量的声明与定义的区别

    变量声明和定义的区别 我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点 ...

  9. C++头文件保护符和变量的声明定义

    1.#ifndef #define #endif头文件保护符 在编译的过程中,每个.cpp文件被看成一个单独的文件来编译成单独的编译单元,#ifndef 保证类的头文件在同一个.cpp文件里被多次引用 ...

  10. C#中对于变量的声明和初始化

    C#变量初始化是C#强调安全性的另一个例子.简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量.大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来看待. ...

随机推荐

  1. k8s pod,pvc,pv无法删除问题

    注意步骤: 一般删除步骤为:先删pod再删pvc最后删pv 但是遇到pv始终处于“Terminating”状态,而且delete不掉 pod一直删不掉 [root@hadoop01 nacos-k8s ...

  2. vue2.0 组件的生命周期

    vue官方文档中给出的vue生命周期的流程图 如下: 生命周期探究 对于执行顺序和什么时候执行,看上面两个图基本有个了解了.下面我们将结合代码去看看钩子函数的执行. <!DOCTYPE html ...

  3. CDN技术之--集群服务与负载均衡

    Web集群是由多个同时运行同一个web应用的服务器组成,在外界看来就像一个服务器一样,这多台服务器共同来为客户提供更高性能的服务.集群更标准的定义是:一组相互独立的服务器在网络中表现为单一的系统,并以 ...

  4. vue中引入路由,如果你懒得写那么

    可以npm i vue-router --save,项目中自动给你写好,vuex也可以

  5. 《ArcGIS Runtime SDK for .NET开发笔记》--在线编辑

    介绍 ArcGIS可以发布具有编辑功能的Feature Service.利用Feature Service我们可以实现对数据的在线编辑. 数据制作参考: https://server.arcgis.c ...

  6. spring boot找不到或无法加载主类 io.renren.RenrenApplication

    spring boot找不到或无法加载主类 io.renren.RenrenApplication 出现问题: spring boot 项目以前一直是好好的,用mvn clean package 打包 ...

  7. Eclipes 配置src.zip(查看源代码)

    接着将这些改变应用,重启eclipes即可.

  8. HDU4578-Transformation-线段树的加、乘、变、次方操作

    Sample Input 5 5 3 3 5 7 1 2 4 4 4 1 5 2 2 2 5 8 4 3 5 3 0 0 Sample Output 307 7489 题意:给出n,m,表示该数有n个 ...

  9. shell 过滤器(管道)

    将几个命令通过管道符组合在一起就是一个管道,通常,通过这种方式使用的命令就被称为过滤器. 过滤器会获得输入,通过某种方式修改其内容,然后将其输出. 常用的被用作过滤器使用的命令为: 1.awk---用 ...

  10. 前端学习笔记——HTML

    1.前端的三把利器 HTML:我们把它比喻成赤裸的一个人 CSS:华丽的衣服 JS/JavaScript:赋予这个人的行为,也就是动起来 2.什么是HTML? HTML 是用来描述网页的一种语言.ht ...