一、Go基础知识2、iota、匿名变量与变量作用域的小细节

这篇具有很好参考价值的文章主要介绍了一、Go基础知识2、iota、匿名变量与变量作用域的小细节。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、特殊常量iota

1、iota是特殊常量,可以理解为是一个可被编译器修改的常量。
2、iota中有一个计数器,会自动加1,自增类型默认是int类型。
3、如果中断了iota则必须显示恢复。参考示例二。
4、iota简化了const类型的定义。
5、每次出现const的时候,iota归零。

示例一:

const (
	err1 = iota
	err2 = iota
	err3 = iota
	err99 = iota
)

const (
	err1 = iota
	err2
	err3
	err99
)

运行结果:

0 1 2 3
0 1 2 3

两个const打印出来的结果都是相同的,当err2及其之后的err常量未定义时,会沿用err1的常量值iota,iota会自动递增。
示例二:

const (
	err1 = iota+1
	err2
	err3 = "haha"
	err99
	err100 = iota
)

运行结果:

1 2 haha haha 4

为什么会出现这种结果呢?
答:因为当iota经过err3和err99时,虽然这两个都是"haha",但是实际上iota经过它们时也是会继续增加计数器的。所以整个err1到err100的iota计数是0、1、2、3、4,只是err1和err2都是iota+1所以展现出来的值是1、2。就算将err3的"haha"替换成整数50,结果也是不变的,并不会影响iota计数。

二、匿名函数

package main

import (
	"fmt"
)

func a() (int, bool) {
	return 0, false
}

func main() {
	// 匿名变量的定义
	var _ int
	// 正常使用
	r, ok := a()
	if ok {
		fmt.Println(r)
	}
	// 匿名变量的使用
	_, ok = a()
	if ok {
		return
	}
}

注意上面这段代码,第一段r, ok := a()中,r变量使用了Println打印了,即视为定义后已使用。而第二段_, ok = a()中,代替了原来r变量的位置,因为在后续中,我们不需要使用这个_变量,所以使用匿名变量,否则r定义后未使用在Go中是会报错的。
可以理解匿名函数_其实是一个占位符。

三、变量的作用域

全局变量在任何一个函数中都能使用。
局部变量只能在自己所属的函数中使用。

if a == "aa" {
	b := "11"
}
fmt.Println(b)

请注意,Println是无法成功打印b变量的,因为b只是if a == “aa” {}中的局部变量。
外部访问需要这样做:

package main

import (
	"fmt"
)

var my string
var a string

func main() {
	if a == "aa" {
		my = "dsfds"
	} else {
		my = "2313431"
	}
	fmt.Println(my)
}

在局部作用域外定义变量,然后在局部作用域内赋值,这样处理就能成功打印my的值了~文章来源地址https://www.toymoban.com/news/detail-752982.html

到了这里,关于一、Go基础知识2、iota、匿名变量与变量作用域的小细节的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go web 基础相关知识

    浏览器本身是一个客户端,当你输入 URL 的时候,首先浏览器会去请求 DNS服务器 ,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建立 TCP连接 ,等浏览器发送完 HTTP Request包 后,服务器接收到请求包之后才开始处理请求包,服务器调用自身服务

    2024年04月17日
    浏览(23)
  • python基础知识(二):变量和常用数据类型

    变量是值可以改变的量,其定义方法如下,通过赋值运算符将变量名和变量值连接: 例如: 其中将值\\\"Hello Python world!“通过赋值运算符”=\\\"赋值给变量message。 (1) 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为

    2024年02月06日
    浏览(33)
  • 一、Go基础知识22、单元测试详解

    Go语言(也称为Golang)是一种开源的编程语言,具有简洁、高效、并发支持等特点。在Go语言中,单元测试是一种重要的测试方法,用于验证代码的各个单元(函数、方法等)是否按照预期进行工作。Go语言内置了一套测试框架。 举一个简单的Go语言单元测试的例子。假设有一

    2024年02月04日
    浏览(25)
  • 一、Go基础知识21、GOPROXY设置镜像、go编码规范

    在设置 Go 语言的代理时,可以使用 GOPROXY 环境变量来指定代理服务器的地址。 Go 官方提供的中国国内镜像: https://goproxy.cn。 以下是如何设置 Goproxy 中国国内镜像的步骤: 在终端或命令提示符中执行以下命令: 如果你使用的是 Windows 平台的命令提示符,可以使用以下命令:

    2024年01月17日
    浏览(40)
  • 交换机是什么 交换机的作用与功能基础知识全面解析

    经常有看到朋友问:“交换机和路由器的区别”,其实要理解这两个东西区别,我们首先最好先了解清楚什么是交换机及什么是路由器等基本知识。本文将详细为大家介绍交换机是什么以及交换机的作用与功能基础知识,希望大家认真阅读学习! 交换机的定义: 网络节点上

    2024年02月06日
    浏览(31)
  • C++ 基础知识笔记(一)变量和数据的输入输出

    C++的基础知识包括如下内容: 变量和数据的输入输出 数据类型和运算符 比较运算符和布尔类型 if-else 选择语句、多分支语句 switch 分支语句 逻辑运算符 for 循环 for 循环进阶 数组 数组进阶 while 循环 格式化输入输出 浮点数和数据类型转换 字符串和字符数组 string 类型的字符

    2024年02月09日
    浏览(35)
  • 深度学习烦人的基础知识(1)---&@在bash中的作用---positional parameter详解

    深度学习,反展到现在,真的是要融会贯通很多东西。遇到便补吧! 想直接知晓答案的,请到最后一个练习题,想补基础知识的,请按照顺序阅读。 更多bash脚本知识可以参考thegeekstuff的教程!人很Nice,讲解清晰明了。 学习:学且练习,请多做做练习题吧! Positional Paramet

    2024年01月16日
    浏览(30)
  • 100天精通Python丨基础知识篇 —— 05、7大基础数据类型详解(变量、列表、集合、字典、元组)

    《100天精通Python专栏 - 快速入门到黑科技》 是由 CSDN 内容合伙人丨全站排名 Top 4 的硬核博主 不吃西红柿 倾力打造,专栏分为基础知识篇和黑科技应用篇。 基础知识篇 以理论知识为主,旨在帮助没有语言基础的小伙伴,学习我整理成体系的精华知识,快速入门构建起知识框

    2023年04月18日
    浏览(46)
  • [Python物联网]Python基础知识和语法--变量和数据类型--Python快速上手开发物联网上位机程序

    目录 一、前言 二、Python变量 三、Python数据类型         1.数值类型         2.字符串类型         3.列表类型         4.元组类型         5.字典类型         6.数据类型转换         当你开始学习Python编程语言时,第一步就是了解 变量和数据类型 。变量是存储

    2024年02月04日
    浏览(42)
  • 【前端基础知识】Vue中的变量不是响应式的吗?属性赋值后视图不变化的原因是什么?

    Vue是一款在国内非常流行的框架,采用MVVM架构,它提供了一种响应式的数据双向绑定机制,使得开发者可以更方便地管理模型和视图。但是在Vue2中,由于使用了 Object.defineProperty 来追踪属性变化,但是它只能追踪已经存在的属性,无法追踪动态添加的属性,导致我们动态添加

    2024年02月01日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包