Go语言基础2

news2025/1/14 1:02:08

一、注释

  • 单行注释
// 我是单行注释
  • 多行注释
/*
我是多行注释
我是多行注释
我是多行注释
*/

二、变量

1. var name type (声明变量时将变量的类型放在变量的名称之后)
  • var,声明变量的关键字
  • name,变量的名字
  • type,变量的类型
eg:

单个定义变量
var name String = "WoO"

var age int = 18


批量定义变量
var (
    addr string
    phone string
)

var a,b,c int
2. 变量的命名规则:驼峰命名法

首个单词小写 后面每个新单词首字母大写
eg:userFiles 、systemInfo 等

3. 如果声明变量后 没有显式的给变量赋值 系统自动赋予它该类型的默认值:
  • 整形和浮点型变量的默认值为0和0.0
  • 字符串变量的默认值为空字符串
  • 布尔型变量默认为false
  • 切片、函数、指针变量的默认为nil
4. var形式的声明语句往往是用于需要显式指定变量类型的地方
5. 上面1.中我们使用=赋值 为变量初始化的标准格式 除此之外 我们还可以用短变量声明与初始化(只能用在函数内部):
name := "WoO"
age := 18

这是Go语言推导声名写法 编译器会根据右边值的类型自动推断出左边值对应的类型

因为不能提供数据类型 所以用Printf查看变量类型
在这里插入图片描述

  • 注:推导声明写法的左值变量必须没有定义过(即在声明变量时就初始化变量)
    若被定义过则编译错误 只能使用等号进行赋值
6. 交换变量的值

Go

var a int = 100
var b int = 200

b,a = a,b

其他语言 则需要借助临时变量temp

a = 100
b = 200
temp = 0
temp = a
a = b
b = temp
7. 打印内存地址

取地址符&+变量名

var age int
	age = 18
	fmt.Printf("age:%d,内存地址:%p", age, &age)

	age = 23
	fmt.Printf("age:%d,内存地址:%p", age, &age)  //值发生变化 但内存地址不变
8. 匿名变量 _

_是空白标识符 可以用于变量的声明或赋值(任何类型都可以赋值给它)
但任何赋给_的值都会被抛弃
即这些值不能在后续的代码中使用 而且也不能用_对其他变量赋值或运算
匿名变量不占用内存空间、不分配内存(直接被丢掉了)
匿名变量与匿名变量之间不会因为多次声明而无法使用

/*
定义一个test函数
返回两个int类型的值
每次调用都会返回100和200两个数值
*/
func test() (int, int) {
	return 100, 200
}

func main() {
	a, _ := test()  //这里假设只需获取第一个返回值 则第二个返回值定义为匿名变量_
	
	_, b := test()  //这里假设只需获取第二个返回值 则第一个返回值定义为匿名变量_
	
	fmt.Println(a, b) //输出结果为100 200 可以发现结果中少了200和100 是匿名变量发挥了作用
}
9. 作用域
  • 局部变量——在函数体内声明 且作用域只在函数体内
    eg:函数的参数和返回值变量都属于局部变量
  • 全局变量——在函数体外声明 只需要在一个源文件中定义 就可以在所有源文件中使用
    全局变量必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写

Go语言程序中全局变量与局部变量名称可以相同 函数体内的局部变量会被优先考虑(就近原则

三、常量

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

1. const name type
  • const,声明常量的关键字
  • name,常量的名字
  • type,常量的类型
func main() {

	//显式定义
	const a int = 1

    //隐式定义 与声明变量相同 类型说明符可以省略
	const b = "www.baidu.com"

	const c, d, e = "WoO", "520", true  //同时定义多个

	fmt.Println(a, b)       //输出结果为1 www.baidu.com
	
	fmt.Println(c, d, e)    //输出结果为WoO 520 true
}
2. 特殊常量iota(常量计数器)
func main() {

	const (
		a = iota
		b               //一组常量中 如果某个常量没有初始值 则默认和上一行一致 所以此处b也是iota
		c               //一组常量中 如果某个常量没有初始值 则默认和上一行一致 所以此处c也是iota
		e = "依托"
		d
		f = "答辩"
		g
		h = iota        //const中每新增一行常量声明时 iota的值都会加1(即iota为const语句块的行索引)
	)

	const (
		i = iota        //iota在const关键字出现时被重置为0 
		j
	)
	fmt.Println(a, b, c, d, e, f, g, h, i, j) //输出结果为0 1 2 依托 依托 答辩 答辩 7 0 1
}

四、数据类型

1. 布尔型

布尔型变量默认为false

应用场景:流程控制(if判断 、 for循环)

2. 数字类型
func main() {
	
	//定义一个整型
	var age int = 18

	//浮点型在机器中存放形式:符号位+指数位+尾数位
	//定义一个浮点型 默认打印六位小数
	var money float64 = 3.14            //GoLang的浮点型默认为float64

	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  	%.nf用来指定保留n位小数
}
类型描述
unit8无符号8位整型(0到255)
unit16无符号16位整型(0到65535)
unit32无符号32位整型(0到4294967295)
unit64无符号64位整型(0到18446744073709551615)
int8有符号8位整型(-128到127)
int16有符号8位整型(-32768到32767)
int32有符号8位整型(-2147483648到2147483647)
int64(默认)有符号8位整型(-9223372036854775808到9223372036854775807)
float32IEEE-754 32位浮点型数
float64(默认)IEEE-754 64位浮点型数
complex6432位实数和虚数
complex12864位实数和虚数
别名对应
byte类似unit8(0到255)
rune类似int32
unit32或者64位
intint64
uintptr无符号整型 用于存放一个指针
3.字符串型
var str string = "WoO"
	fmt.Printf("%T,%s\n", str, str) //string,WoO

	//单引号 字符,整型——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	 
                                                                      参考资料:遇见狂神说

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

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

相关文章

FFMPEG完美入门资料---003---FFmpeg 架构

3.1 FFmpeg 文件结构 libavformat 主要存放 ffmpeg 支持的 各种编解码器 的实现及 ffmpeg 编解码 功能相关的数 文件简要说明allcodecs.c简单的注册类函数avcodec.h编解码相关结构体定义和函数原型声明dsputil.c限幅数组初始化dsputil.h限幅数组声明imgconvert.c颜色空间转换相…

剑指offer(C++)-JZ63:买卖股票的最好时机(一)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 假设你有一个数组prices,长度为n,其中prices[i]是股票在第i天的价格,请…

FreeMen正式上线,让工作更自由

“让工作更自由”,开屏页上六个大字宣告着FreeMen正式上线,全新的FreeMen APP也正式登录各大手机应用市场。作为一款专注IT技术者圈子的APP,其上线标志着助力程序员职业道路上向前迈进一大步。 FreeMen相关负责人表示,基本上10个职…

基于java+Springboot操作系统教学交流平台详细设计实现

基于javaSpringboot操作系统教学交流平台详细设计实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源…

【C语言】使用指针时出现的各种错误总结以及处理方法

🏖️作者:malloc不出对象 ⛺专栏:《初识C语言》 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录前言一、什么是野指针二、野指针出现…

Redis主从哨兵集群

主从 主从同步原理 1.全量同步 1.从节点刚连接到主节点时,主动请求数据同步 2.主节点判断是否是第一次同步,如果是,就返回主节点的数据版本信息 3.随后,主节点执行bgsave,生成RDB文件,并发送给从节点 4.这…

Java时间类

时间在Java中是两个类 Date 和 Calendar Date类 Date是在Java.util包中的也就是工具包。 测试 输出的是当前的系统时间 修改idea中的注释的颜色: 是date不是data package org.data; import java.util.Date; public class Test { public static void main(…

【Oracle】20230106PLSQL中文不显示,全部为?解决流程

问题:查询的表中有中文数据,全部显示为? 解决途径1:修改注册表以及环境变量(改系统变量!不要只改用户变量) Oracle使用——PLSQL的中文乱码显示全是问号_海蓝树的博客-CSDN博客_plsql无法显示…

上线网站详细介绍(服务器购买-域名申请-SSL证书申请)

文章目录上线之前的准备工作,通俗的来讲:服务器是什么-云服务器购买域名解释-域名备案-域名如何申请①什么是域名,为什么要域名?②为什么非要域名备案和不备案的区别?③自己的主机怎么备案-自己的电脑可以作为服务器吗…

系分架构 - 软件架构设计

个人总结,仅供参考,欢迎加好友一起讨论 文章目录系分&架构 - 软件架构设计考点摘要概念架构的 4 1 视图软件架构风格经典五大架构风格调用/返回风格独立构件风格虚拟机风格仓库风格层次架构风格二层C/S架构三层C/S架构B/S架构混合架构风格闭环控制架…

Linux 软件管理 RPM 管理工具

概念引入 : # 首先提出一个问题,我们在 Linux 操作系统中是如何 安装软件的 ?? >>> 在 Linux 系统中,安装软件是有三种方式 >>> 第一种 : RPM 管理工具 第二种 : …

如何在新环境接手项目?(上)【洞见2】

01、世界真实情况根据IDC机构在2022年统计显示,截止2021年我国中小企业数量已达到4881万家,同比增长8.5%。中小企业的行业分布不均匀,超过70%的中小企业分布于专业服务业(含互联网和科技服务)、物流批发、零售和制造业…

剑指offer----C语言版----第十一天

目录 1. 数值的整数次方 1.1 运行超时的思路 1.2 思路一: 快速幂 (递归实现) 1.3 思路二: 快速幂 (迭代实现) 1. 数值的整数次方 原题链接: 剑指 Offer 16. 数值的整数次方 - 力扣(LeetCode)https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-f…

web3学习:什么是以太坊

以太网是“世界的计算机”,这是以太坊平台的一种常见描述。这是什么意思呢?让我们首先从关注计算机科学的描述开始,然后对以太坊的功能和特性进行更实际的解读,并将其与比特币和其他分布式账本技术(简单起见&#xff0…

深度学习笔记:神经网络(2)

对于神经网络上一篇文章,可见:https://blog.csdn.net/Raine_Yang/article/details/128473486?spm1001.2014.3001.5501 神经网络各层信号传递的实现: 对于全连接网络,连接权重的个数为(前一层神经元总数 * 后一次神经…

el-table(type=“selection“)多选框两种回显

目录 一、前端数据回显(页面间数据展示) 1、图篇帮助理解 2、描述: 3、代码 4、两个API,一个v-model 二、数据库数据回显 1、描述: 2、核心代码: 3、比较完整代码:(这是element ui官方文档上的) 4…

XMLHttpRequest 对象(AJAX通信)

1.XMLHttpRequest 对象是什么? 浏览器与服务器之间,采用 HTTP 协议通信。用户在浏览器地址栏键入一个网址,或者通过网页表单向服务器提交内容,这时浏览器就会向服务器发出 HTTP 请求。 1999年,微软公司发布 IE 浏览器…

基于STM32F411使用SPI+DMA驱动LCD

先看效果 F411CE 硬件SPI+DMA驱动LCD基于HAL库 其实HAL库我用不太习惯,一直也是用的标准库 但HAL库确实是好上手一些,就迅速创建一个新的template 这次就当尝试一下吧,因为用的比较少,我会记录的详细 如图点击&…

火山引擎DataLeap数据调度实例的 DAG 优化方案

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 实例 DAG 介绍 DataLeap 是火山引擎自研的一站式大数据中台解决方案,集数据集成、开发、运维、治理、资产管理能力于一身的大数据研发治理套件。在平台中&…

从0到1完成一个Vue后台管理项目(四、引入axios、配置路由)

往期 从0到1完成一个Vue后台管理项目(一、创建项目) 从0到1完成一个Vue后台管理项目(二、使用element-ui) 从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库) axios axios就是…