狂神说Go语言学习笔记(二)

news2024/11/27 18:40:33

一、匿名变量

匿名变量的特点是一个下划线 “_”,它本身就是一个特殊的标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用。

func test() (int, int) {
	return 100, 200
}

func main() {
	a, _ := test()
	_, b := test()
	fmt.Println(a, b) //100 200
}

在编码的过程中,可能会遇到没有名称的变量、类型或者方法。虽然这不是必须的,但有时候这样做可以极大地增强代码的灵活性,这些变量被统称为匿名变量
匿名变量不占用内存空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用。



二、变量的作用域

一个变量(常量、类型或函数)在程序中都有一定的作用范围,称之为作用域

局部变量

在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,函数的参数和返回值变量都属于局部变量

func main() {

	//声明局部变量
	var a int = 3
	var b int = 4

	//声明局部变量
	c := a + b

	fmt.Printf("a = %d,b = %d,c = %d", a, b, c) 
	//a = 3,b = 4,c = 7
}

全局变量

函数体外声明的变量称之为全局变量,只需要在一个源文件中定义,就可以在所有源文件中使用,当然,不包含这个全局变量的源文件需要使用 import 关键字 引入
全局变量必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写

// 声明全局变量
var c int

func main() {

	//声明局部变量
	var a, b int
	a = 3
	b = 4
	c = a + b
	fmt.Printf("a = %d,b = %d,c = %d", a, b, c) //a = 3,b = 4,c = 7
}

Go语言程序中全局变量与局部变量名称可以相同,但是函数体内的局部变量会被优先考虑!


// 声明全局变量
var a float32 = 3.14

func main() {
	//声明局部变量
	var a int = 3
	fmt.Println(a)  //3
}



三、常量

常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型

const identifier [type] = value

你可以省略说明符 [type] ,因为编译器可以根据变量的值来推断其类型
多个相同类型的声明可以简写为:

const c_name1, c_name2 = value1, value2

常量的定义:const

func main() {

	//显示定义
	const a int = 3

    //隐式定义
	const b = "只因"

	const c, d, e = false, "下蛋", "哥哥"

	fmt.Println(a, b)//3 只因
	
	fmt.Println(c, d, e) //false 下蛋 哥哥
}



四、常量iota

iota,特殊常量,可以认为是一个可以被编译器修改的常量,iota是Go语言的常量计数器
iota在const关键字出现时将被重置为0

func main() {

	const (
		a = iota
		b
		c
		e = "只因"
		d
		f = "哥哥"
		g
		h = iota
	)

	const (
		i = iota
		j
	)
	fmt.Println(a, b, c, d, e, f, g, h) //0 1 2 只因 只因 哥哥 哥哥 7
	fmt.Println(i, j)                   //0 1
}



五、布尔类型

func main() {

	// bool : true false
	// bool 默认值是 false

	var isFlag bool = true

	fmt.Println(isFlag) //true
	fmt.Printf("%T,%t\n", isFlag, isFlag)  //bool,true

}



六、数字类型

func main() {
	/**
	别名
	byte unit8
	rune int32
	int  int64
	 */
	
	//定义一个整型
	var age int = 18

	//定义一个浮点型
	//默认是六位小数打印
	var money float64 = 3.14

	fmt.Printf("%T,%d\n", age, age)     //int,18
	fmt.Printf("%T,%f\n", money, money) //float64,3.140000
	//指定小数位 但是有可能丢失精度
	fmt.Printf("%T,%.2f\n", money, money) //float64,3.14
}



七、字符与字符串

Go语言的字符串的字节使用UTF-8编码表示Unicode文本

    var str string = "只因"
	fmt.Printf("%T,%s\n", str, str) //string,只因

	//单引号 字符,整型——ASCII字符码
	v1 := '中'
	v2 := 'A'

	//编码表 ASCII字符码
	//扩展:
	//所有的中国字的编码表:GBK
	//全世界的编码表:Unicode编码表
	fmt.Printf("%T,%d\n", v1, v1) //int32,20013
	fmt.Printf("%T,%d\n", v2, v2) //int32,65	 

Go语言的字符串连接可以通过+实现

//字符串连接 +
	fmt.Println("hello," + "giegie")

转义字符

//转义字符
	fmt.Println("hello\"giegie") // hello
	fmt.Println("hello\ngiegie") //n 换行   
	fmt.Println("hello\tgiegie") //t 制表符  hello   giegie



八、数据类型的转换

在必要以及可行的情况下,一个类型的值可以被转换成另一种类型的值。由于Go语言不存在隐式类型转换,因此所有的类型转换都必须显式的声明

valueOfTypeB = typeB(valueOfTypeA)

类型B的值 = 类型B(类型A的值)

    a := 5.0    //float
	b := int(a) //转换为int

	fmt.Printf("%T,%f\n", a, a) //float64,5.000000
	fmt.Printf("%T,%d\n", b, b) //int,5

	//不能转换为bool类型
	//e := bool(a)

类型转换只能在定义正确的情况下转换成功,例如从一个取值范围较小的类型转换到一个取值范围较大的类型(将 int16 转换为 int32)当从一个取值范围较大的类型转换到取值范围较小的类型时(将 int32 转换为 int16 或者将 float 转换为 int),会发生精度丢失的情况


九、算数运算符

在这里插入图片描述

    var a int = 10
	var b int = 3

	fmt.Println(a + b)
	fmt.Println(a - b)
	fmt.Println(a * b)
	fmt.Println(a / b)
	fmt.Println(a % b)
	a++
	fmt.Println(a)
	a--
	fmt.Println(a)

在这里插入图片描述


十、逻辑运算符

在这里插入图片描述

	var a int = 10
	var b int = 11

	// == 等于 = 赋值
	//关系运算符 结果都是bool
	fmt.Println(a == b)
	fmt.Println(a != b)
	fmt.Println(a > b)
	fmt.Println(a < b)
	fmt.Println(a >= b)
	fmt.Println(a <= b)

	if a > b {
	} else {
	}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49772.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

共享雨伞app开发,提高资源利用率

共享经济无疑是当下热门行业之一&#xff0c;生活中随处可见的共享自行车、共享汽车、共享充电宝等一系列设备都是共享经济的产物。互联网时代下的共享经济已经呈现出多元化的发展趋势&#xff0c;其中在日常出行方面&#xff0c;共享雨伞的出现可以很好的解决用户偶遇的突发天…

Centos7 + kubenetes 一键安装实战

1. kubernetes部署环境要求 一台或多台机器&#xff0c;操作系统CentOS7.x-86_x64硬件配置&#xff1a;内存2GB或2G&#xff0c;CPU 2核或CPU 2核集群内各个机器之间能相互通信集群内各个机器可以访问外网&#xff0c;保证网络畅通&#xff08;最好能访问谷歌&#xff09;,需要…

【STM32笔记】HAL库中的SPI传输(可利用中断或DMA进行连续传输)

【STM32笔记】HAL库中的SPI传输&#xff08;可利用中断或DMA进行连续传输&#xff09; SPI 是英语Serial Peripheral interface的缩写&#xff0c;顾名思义就是串行外围设备接口。是Motorola(摩托罗拉)首先在其MC68HCXX系列处理器上定义的。 SPI&#xff0c;是一种高速的&…

优秀软件测试报告

Document number 文档编号 Confidentiality level 密级 Test Report-01 [绝密/秘密/内部公开] Document version 文档版本 Total 10 pages 共 10 页 V1.0 测试报告 Prepared by 拟制 Date 日期 yyyy-mm-dd Reviewed by 评审人 Date 日期 yyyy-mm-dd Approved b…

CSS基础(超详解)

目录 1 css基础知识 1.1基础知识 1.1 概述 1.2 优势 1.3应用css的步骤 1.2 css基本语法 1.3 css使用方法 1.3.1 内嵌样式 1.3.2 内部样式 1.3.3 外部样式 1.3.4 使用import引入外部样式文件 1.3.5 叠层样式优先级 1.3.6 注释 2 CSS选择器 2.1 元素选择器 2.2 类…

Linux crontab定时任务设置

1.检查是否安装了crontab # rpm -qa | grep crontab 2.重启crontab服务 一定重启&#xff0c;这样确保了crontab服务的开启 # /etc/init.d/crond restart 3.我们直接以root用户进行操作。所以直接进到root的cron配置文件。 # cd /var/spool/cron/ 4.可以查看一下 root 用户…

VisDrone数据集之集群检测(一)

VisDrone坐标信息 VisDrone数据集格式: txt标签内容为&#xff1a;bbox_left&#xff0c;bbox_top&#xff0c;bbox_width&#xff0c;bbox_height&#xff0c;score,object_category&#xff0c;truncation&#xff0c;occlusion 类别&#xff1a; ignored regions(0), pede…

【一】曾经那些错误,你又踩坑了吗?

巩固基础和不断练习&#xff0c;我们才会进步&#xff01;这一期开始&#xff0c;我们就要看看我们之前的学过的知识到底掌握了没有&#xff0c;再通过练习去巩固&#xff01; 目录 一、for循环 二、指针有关内容 1.*&#xff08;解引用&#xff09;和其他运算符 2.指针变…

碰到CTS问题我该如何处理?

一、什么是CTS&#xff1f; CTS测试全称为系统兼容测试&#xff08;Compatibility Test suite&#xff09;&#xff0c;CTS是为了测试手机是否符合google定义的兼容性规范&#xff08;Compatibility Definition&#xff09;。从而基于Android的应用程序能在基于同一个api版本的…

网页JS自动化脚本(四)修改元素的尺寸颜色显隐状态

修改元素尺寸 在定位到了元素之后, 我们就可以对元素进行一些修改了,我们先来修改元素泊宽度以及高度 window.onloadfunction(){var theElementdocument.querySelector("img.undertips-link-lefticon");theElement.style.width"100px";theElement.style.…

BL200EC如何与欧姆龙相连

1、欧姆龙 NX1P2 的 Port1 接到电脑的网口&#xff0c;Port2 接到 BL200EC 的 ETH1 网口。 欧姆龙 NX1P2 和 BL200EC 通电。 2、打开 Sysmac Studio 软件&#xff0c;新建工程&#xff0c;选择 NX1P2-9024DT&#xff0c;点击创建。 ​ 编辑切换为居中 添加图片注释&#xf…

【云原生】服务网格kiali开发环境搭建问题解析

文章目录背景环境准备参考连接问题1&#xff1a;windows如何配置kiali开发环境问题2&#xff1a;kiali如何配置k8s连接问题3&#xff1a;kiali启动报错关键词&#xff1a;方便你们找到我背景 kiali&#xff08;凯莉&#xff09;是istio技术对应的管理系统&#xff0c;其前端为…

概率论与数理统计(1)——基本概念

引言 确定性&#xff08;必然&#xff09;&#xff1a;一定发生与一定不发生 随机现象&#xff1a;可能发生也可能不发生 随机事件 实验&#xff1a;对事物进行观察测量 随机试验&#xff1a;&#xff08;1&#xff09;在相同的条件下可以重复&#xff1b;&#xff08;2&…

oracle使用小结

1.安装时oracle12C去除勾选为创建为容器数据库 2.cmd命令 <1>.sqlplus/nolog // –运行sqlplus命令&#xff0c;进入sqlplus环境&#xff0c;nolog参数表示不登录&#xff1b; <2>.conn/as sysdba // **–以系统管理员(sysdba)**的身份连接数据库&#xff1b; …

[附源码]计算机毕业设计springboot健康医疗体检

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

记录--用JS轻松实现一个录音、录像、录屏的工具库

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 最近项目遇到一个要在网页上录音的需求&#xff0c;在一波搜索后&#xff0c;发现了 react-media-recorder 这个库。今天就跟大家一起研究一下这个库的源码吧&#xff0c;从 0 到 1 来实现一个 R…

EL 与 JSTL(1)( EL 表达式基础知识)

EL 表达式用美元符号“$”定界&#xff0c;内容包含在一对花括号“{}”中&#xff0c;例如&#xff1a;${expression}。 EL 表达式语法很简单&#xff0c;它最大的特点就是使用很方便。 1.EL 表达式特点 &#xff08;1&#xff09;在 EL 表达式中可以获得命名空间&#xff08;…

uni-app入门:全局数据共享方案之mobx

1.全局数据共享介绍 2.准备工作 3.使用说明 3.1 page页面进行全局数据共享 3.2 component组件进行全局数据共享 1.全局数据共享介绍全局数据共享也叫作状态管理,主要用于组件间数据共享问题的处理.实际开发中常用的实现方案:vuex、redux、mobx&…

西山科技将于12月6日上会:年收入2亿元,耗材收入成为新增长点

11月29日&#xff0c;上海证券交易所科创板披露的信息显示&#xff0c;重庆西山科技股份有限公司&#xff08;下称“西山科技”&#xff09;将于2022年12月6日接受科创板上市委的现场审议。目前&#xff0c;西山科技已经更新了招股书&#xff08;上会稿&#xff09;。 据贝多财…

uni-app 使用 webview运行到小程序,打开萤石云视频

由于微信小程序特殊性&#xff0c;导致APP和h5适应的它都适应不了&#xff0c;因此&#xff0c;不得不对小程序做一些特殊的处理。 问题一&#xff1a;微信小程序无法打开web-view 的URL 相对于APP和H5而言&#xff0c;微信小程序比较严格&#xff0c;对于打开外链这种功能&a…