在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
通过直观的示例轻松理解Go变量。 Go定义了读取的变量。 Go是明确而简单的。 Go不用做顺时针/螺旋规则魔术的算法来读取C声明,而是对我们人类而不是对外星人使用更简单的方法( 我曾经在一段时间后习惯了C的声明语法,但这并不意味着我们可以做到)不能像Go中那样使事情变得更好 )。 →C的版本: →Go版本: 变量具有类型,值和地址, 如下所示 。 当您需要将数据存储在某个地方以再次用于代码中的后续操作时,将使用变量。 Go是一种静态类型的语言。 这意味着,每个变量都应具有一个类型,并且所有类型都互不相同。 类型→变量内可以存储哪种信息。 值→变量内部的存储值。 地址→在计算机内存中可以找到变量的位置。 简而言之,变量使我们能够将数据存储在某处。 编程就是将一种数据形式转换为另一种形式。 没有变量,程序中将只有静态数据,我们无法更改。 静态变量将在我们的静态程序中烘焙。 变量使我们能够进行动态操作 ,例如获取用户反馈并将其存储到变量中,然后再次使用相同的值,例如数学PI编号。 由于变量,我们不必一次又一次键入值。 如果进入机器代码级别,这是微处理器( 和某些外星人)理解的语言,您会发现,有很多可变存储机制可以将数据从一种形式转换为另一种形式。 因此,基本上,我们的计算机对变量提供了硬件级别的支持。 在向您展示如何声明变量之前,最好先简要介绍一下零值,这在Go中非常重要。 如果仅声明了变量且未分配任何值,则Go将根据变量的类型为其分配零值。 您可以通过查看上图查看哪些类型获得哪些零值。 刚开始时,这可能会使您感到困惑,但是,除第一个以外的其他符号更像是辅助符号。
使用声明类型声明一个名为ageOfUniverse的变量:var关键字声明一个新变量。 声明 →var关键字声明一个新变量 。 名称 →变量的名称为ageOfUniverse。 类型 →我们可以在变量内部存储哪种数据。 当您仅通过长声明来声明变量而未为其分配变量时,其值将为零值。 零值是Go中的默认值。 声明一个名为ageOfUniverse的变量,并将值140亿存储在该变量中,并自动猜测其类型。 名称 →变量的名称为ageOfUniverse 声明并赋值 → :=是一种特殊类型的运算符,它声明并将值分配给变量。 值 → 我们要存储到变量中的数据。 声明该变量,并将其值和类型一起分配。 您可以分配Go允许的任何值。 很好,是吗? 去可以猜 变量的类型。 这称为类型推断 ,这种类型的声明称为短变量声明 或简称:short声明 。 当使用简短声明时,显然Go不会使用零值赋值。 因为您直接为变量分配了一个值,所以它将是其初始值。 不过,您也可以手动分配零值。 例如,您可以在仍使用简短声明时将0分配给整数( 0是整数的零值 )。 顺便说一句,14e9意味着140亿。 这就是科学记号 。 它的默认类型是float64。 “ e”在14之后放置9个零。 在同一条语句中声明具有不同类型和值的多个变量。 这是长和短变量声明符号的混合。 在括号内使用时, var关键字声明一组变量。 第一行 ,ageOfUniverse int,就像一个长声明。 只需声明一个具有所需类型的变量,然后自动为其分配零值即可。 第二行对您来说是新的,称为多变量声明 。 与简短声明一样,它声明并分配给变量。 变量名和值名用逗号分隔。 在左侧的项目数( 它是:ageOfEarth livablePlanets)应与对右侧的项数( 它是:1,4.5e9)。 无需在此处输入简短声明运算符“ :=”。 第三行与第二行类似,但是,它只声明coolLang变量并为其分配一个字符串: go 。 请注意,将其与一个变量一起使用时,无需使用逗号。 声明两个类型为float64和string的变量; 并为第一个变量分配140亿美元,为第二个变量分配“ go”。 这是使用短声明的多变量声明的简单版本。 您只需用逗号分隔变量和值。 变量数量和值应匹配。 将数据分配给变量时,也称为分配数据和=运算符。 该变量应该在之前声明过,并且数据类型应该与该变量的声明数据类型相同。 该变量将保存您设置的新数据。 但是,当您想为变量分配错误的数据类型时,Go编译器会警告您并且编译失败。 例如,您不能将字符串分配给类型为integer的变量。 当您不知道要在变量内部存储哪些数据时,请使用长声明。 无论您在变量内部知道存储什么,都应使用简短声明。 当您想一起定义多个变量时,请使用多个声明。 另外,当您要向其他希望将此类变量分组在一起的代码阅读者提供提示时,请使用多个声明。 有关其他详细信息, 请参见此内容。 顺便说一句,您不能在函数(包括主函数)之外使用简短声明。 或者:您将遇到以下错误:“ 语法错误:函数主体外部的非声明语句”。 当我们声明一个整数变量时,Go在内存中为该变量保留了4个字节的存储空间。 当数据不适合变量时,Go编译器会警告您存在溢出并终止。 但是, int是软盘类型。 它可以存储的数据可以根据编译而改变。 为32位体系结构进行编译时,它可以容纳4个字节,而在64位体系结构中,则可以容纳8个字节。 因此,我们不能仅将Universe的年龄存储在int变量中。 我们应该显式地使用uint64 。 因为int不能存储约140亿年,所以它只能在32位计算机上存储约40亿年。 否则它将溢出,但是对于64位计算机,编译将起作用。 注意:宇宙曾经是“时间”的无限小而密集的点(不是吗? Ethan Siegel吗?),但这并不意味着我们可以使用Go来做同样的事情! ???? 自己尝试。 尝试一下 :示例显示了ageOfUniverse变量可以存储多少字节。 不正确的代码。 运行它看看自己。 正确的代码。 运行。 创建新变量时,变量的寿命受到定义范围的限制。 我们将在以后的教程中讨论范围。 但是,现在很高兴知道,我现在要告诉您的重要作用域之一是有一个包级作用域和一个函数级作用域。 当我们在函数内部声明一个新变量时,该变量只能在该函数内部使用( 除非我们从函数返回它或将其写入其他地方) 。 而且,当我们在包范围中声明一个新变量时,所有其他包成员都可以看到并使用它,除非我们将其导出到其他包中。 要在包范围内定义变量,您只需要使用长声明,而不能对包范围变量使用短声明。 要将变量导出到另一个包,我们需要输入变量名称的第一个字母和一个大写字母。 但是,我不建议您将包变量尽可能多地暴露给外界。 甚至,将变量暴露给程序包也可能有害。 还有其他方法可以做到这一点。 您可以阅读我有关封装和包装的文章 ,也可以阅读另一篇文章 “ 隐藏几乎所有内容 ”部分。 好的,伙计们,这就是现在。 谢谢阅读! ❤️ 请支持我: 关注我的出版物, 并 在我的帖子中添加拍手 ! mostly我主要在推特上发推文, 您将收到有关我的新帖子和即将上线的在线Go课程(每个星期三)的通知。 最初于 2017 年10月4日 发布在 blog.learngoprogramming.com 上。 From: https://hackernoon.com/a-visual-how-to-guide-to-go-variables-ffd0fd8d3c12 |
请发表评论