当前位置: 首页 > news >正文

GoLong的学习之路(一)语法之变量与常量

目录

  • GoLang
  • 变量
    • 批量声明
    • 变量的初始化
    • 类型推导
    • 短变量声明
    • 匿名变量
  • 常量
    • iota(特殊)(需要重点记忆)

GoLang

go的诞生为了解决在21世纪多核和网络化环境越来越复杂的变成问题而发明的Go语言。
go语言是从Ken Thomepson发明的B语言和Dennis M.Ritchie发明的c语言逐步演化过来的,是c语言家族的成员(在我看来,其实现在大部分还在用的语言与c语言分不开)
Go语言有着和C语言类似的语法外表,和C语言一样是专业程序员的必备工具,可以用最小的代价获得最大的战果。

  • 同时避免引入过度的复杂性。
  • Go语言中和并发编程相关的特性是全新的也是有效的,同时对数据抽象和面向对象编程的支持也很灵活。
  • Go语言同时还集成了自动垃圾收集技术用于更好地管理内存。(类似于java的JVM的回收机制)

Go语言还是一个开源的项目,可以免费获编译器、库、配套工具的源代码。

变量

关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。

Go语言中有25个关键词:

break        default      func         interface    select
case         defer        go           map          struct
chan         else         goto         package      switch
const        fallthrough  if           range        type
continue     for          import       return       var

Go语言中37个保留字:

Constants:    true  false  iota  nilTypes:   
int  int8  int16  int32  int64  
uint  uint8  uint16  uint32  uint64  uintptr
float32  float64  complex128  complex64
bool  byte  rune  string  errorFunctions:   make  len  cap  new  append  copy  close  delete complex  real  imag  panic  recover

程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。(方便计算机获取数据)

Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。

var 变量名 变量类型

var name string
var age int
var isOk bool

批量声明

每声明一个变量就需要写var关键字会比较繁琐,go语言中还支持批量变量声明:

var (a stringb intc boold float32
)

变量的初始化

Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值。

  • 整型和浮点型变量的默认值为0
  • 字符串变量的默认值为空字符串
  • 布尔型变量默认为false
  • 切片、函数、指针变量的默认为nil

变量初始化的标准格式:

var 变量名 类型 = 表达式

var age int = 18
var name, age = "Q1mi", 20

类型推导

有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。

var age = 18

短变量声明

在函数内部,可以使用更简略的 [ := ] 方式声明并初始化变量。

package main
//可放多个包
import ("fmt")
// 全局变量m
var m = 100func main() {// 此处声明局部变量mn := 10m := 200 fmt.Println(m, n)
}

匿名变量

在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线 _ 表示:

func foo() (int, string) {return 10, "你好"
}
func main() {x, _ := foo()_, y := foo()fmt.Println("x=", x)fmt.Println("y=", y)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。

注意:

  1. 函数外的每个语句都必须以关键字开始(var、const、func等)
  2. :=不能使用在函数外。
  3. _多用于占位,表示忽略值。

常量

相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明非常类似,只是把 var 换成了const,常量在定义的时候必须赋值。

const A = 3.1415
const B = 2.715

声明了 A 和 B 这两个常量之后,在整个程序运行期间它们的值都不能再发生变化了。

批量声明常量的时候,const同时声明多个常量,如果省略了值则表示和上面一行的值相同。(初始化后就一毛一样了)

func main() {const (n1 = 100n2n3)fmt.Println(n1, n2, n3)
}

在这里插入图片描述

iota(特殊)(需要重点记忆)

iota是go语言的常量计数器,只能在常量的表达式中使用。iota在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。

应用在枚举情况是很有用的。

  1. 枚举的特点就是不可变
  2. 枚举变量中的值不能重复
const (n1 = iota //0n2        //1n3        //2n4        //3)

使用 _ 跳过某些值

const (n1 = iota //0n2        //1_n4        //3)

iota声明中间插队

const (n1 = iota //0n2 = 100  //100n3 = iota //2n4        //3)const n5 = iota //0

定义数量级:

const (_  = iotaKB = 1 << (10 * iota)MB = 1 << (10 * iota)GB = 1 << (10 * iota)TB = 1 << (10 * iota)PB = 1 << (10 * iota))

多个iota定义在一行

func main() {const (a, b = iota + 1, iota + 2 //1,2c, d  // 2,3e, f  // 3,4)
}

学习自:李文周:博客

相关文章:

GoLong的学习之路(一)语法之变量与常量

目录 GoLang变量批量声明变量的初始化类型推导短变量声明匿名变量 常量iota&#xff08;特殊&#xff09;&#xff08;需要重点记忆&#xff09; GoLang go的诞生为了解决在21世纪多核和网络化环境越来越复杂的变成问题而发明的Go语言。 go语言是从Ken Thomepson发明的B语言和…...

Go-Python-Java-C-LeetCode高分解法-第十一周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接&#xff1a;LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏&#xff0c;每日一题&#xff0c;和博主一起进步 LeetCode专栏 我搜集到了50道精选题&#xff0c;适合速成概览大部分常用算法 突…...

封装axios的两种方式

作为前端工程师&#xff0c;经常需要对axios进行封装以满足复用的目的。在不同的前端项目中使用相同的axios封装有利于保持一致性&#xff0c;有利于数据之间的传递和处理。本文提供两种对axios进行封装的思路。 1. 将请求方式作为调用参数传递进来 首先导入了axios, AxiosIn…...

【自然语言处理】NLTK库的概念和作用

文章目录 一、NLTK库介绍二、NLTK库的使用2.1 初级使用2.2 中级使用 参考资料 一、NLTK库介绍 Natural Language Toolkit (NLTK)是一个广泛使用的Python自然语言处理工具库&#xff0c;由Steven Bird、Edward Loper和Ewan Klein于2001年发起开发。NLTK的目的是为自然语言处理&…...

Python爬虫如何解决提交参数js加密

注意&#xff01;&#xff01;&#xff01;&#xff01; 仅做知识储备莫拿去违法乱纪&#xff0c;有问题指出来&#xff0c;纯做笔记记录 由于&#xffe5;%…………&&%#%** 所以&#xff01;#&#xffe5;……&*……* 啥也不说直接上代码 import execjs js_ji…...

云数据库及RDS数据库介绍

1.云数据库概念 云数据库是指被优化或部署到一个虚拟计算环境中的数据库&#xff0c;具有按需付费、按需扩展、高可用性以及存储整合等能力。 2.云数据库特性 云数据库的特性有&#xff1a;实例创建快速、支持只读实例、读写分离、故障自动切换、数据备份、Binlog备份、SQL审…...

c语言进阶部分详解(详细解析自定义类型——枚举,联合(共用体))

上篇文章介绍了结构体相关的内容&#xff0c;大家可以点击链接进行浏览&#xff1a;c语言进阶部分详解&#xff08;详细解析自定义类型——结构体&#xff0c;内存对齐&#xff0c;位段&#xff09;-CSDN博客 各种源码大家可以去我的gitee主页进行查找&#xff1a;唔姆 (Nerow…...

使用 Requests 库和 PHP 的下载

以下是一个使用 Requests 库和 PHP 的下载器程序&#xff0c;用于从 www.people.com.cn 下载音频。此程序使用了 https://www.duoip.cn/get_proxy 这段代码。 import requests from bs4 import BeautifulSoup import pafy import timedef get_proxy():url "https://www.…...

ConcurrentHashMap底层具体实现知道吗?实现原理是什么

从这三个方面来回答&#xff1a; ConcurrentHashMap 的整体架构 ConcurrentHashMap 的基本功能 ConcurrentHashMap 在性能方面的优化 ConcurrentHashMap 的整体架构 这个是 ConcurrentHashMap 在 JDK1.8 中的存储结构&#xff0c;它是由数组、单向链表、红黑树组成. 当我们初始…...

Go语言“Go语言:掌握未来编程的利器“

Go语音的发展史可以追溯到2009年&#xff0c;当时谷歌公司推出了一款名为“Google Assistant”的智能助手&#xff0c;它使用自然语言处理技术来与用户进行交互。随后&#xff0c;Go语音逐渐发展成为一种广泛使用的语音技术&#xff0c;其发展历程如下&#xff1a; 起步阶段&a…...

达梦管理工具报错“结果集不可更新,请确认查询列是否出自同一张表,并且包含值唯一的列。”

在使用达梦数据库管理工具时&#xff0c;我们测试过程中时常需要更新表数据&#xff0c;有时为了便捷&#xff0c;会直接使用管理工具修改表数据的值&#xff0c;但偶尔会遇到“结果集不可更新&#xff0c;请确认查询列是否出自同一张表&#xff0c;并且包含值唯一的列。”的报…...

TensorFlow2从磁盘读取图片数据集的示例(tf.keras.utils.image_dataset_from_directory)

import os import warnings warnings.filterwarnings("ignore") import tensorflow as tf from tensorflow.keras.optimizers import Adam from tensorflow.keras.applications.resnet import ResNet50#数据所在文件夹 base_dir ./data/cats_and_dogs train_dir os…...

Unity开发过程中的一些小知识点

1、如何查询挂载了指定脚本的游戏物体 可以直接在Hierarchy面板上&#xff0c;搜索想要找的脚本名 2、如何将Unity生成的多个相同游戏物体获得序号 可以使用Unity的API Transform.GetSiblingIndex() 实现。 Transform.GetSiblingIndex()gameobject.idTransform.GetSiblingI…...

大语言模型(LLM)综述(一):大语言模型介绍

A Survey of Large Language Models 前言1. INTRODUCTION2. OVERVIEW2.1 大语言模型的背景2.2 GPT系列模型的技术演变 前言 随着人工智能和机器学习领域的迅速发展&#xff0c;语言模型已经从简单的词袋模型&#xff08;Bag-of-Words&#xff09;和N-gram模型演变为更为复杂和…...

在Ubuntu上安装和挂载NFS

在Ubuntu上安装和挂载NFS可以按照以下步骤进行&#xff1a; 安装NFS客户端工具&#xff1a;在Ubuntu上&#xff0c;可以使用以下命令安装NFS客户端工具&#xff1a; shell复制代码 sudo apt-get install nfs-common 创建挂载点&#xff1a;在本地Ubuntu计算机上&#xff0c;…...

Python 实现的简易数据库管理系统 (DBMS)

在这篇文章中&#xff0c;我们将深入探讨如何使用 Python 从头开始实现一个简易的数据库管理系统 (DBMS)。这不是一个生产级的 DBMS&#xff0c;但它为我们提供了一个如何构建数据库系统的基础概念。 1. 数据表的实现 首先&#xff0c;我们定义了一个 Table 类来模拟数据库中…...

1.初识MySQL

初识 MySQL 1.服务器处理客户端请求2.常用存储引擎3.关于存储引擎的一些操作3.1 查看当前服务器程序支持的存储引擎3.2 设置表的存储引擎3.2.1 创建表时指定存储引擎3.2.2 修改表的存储引擎 4.总结 MySQL 默认采用 TCP/IP 的方式来处理客户端与服务器连接过程。 1.服务器处理客…...

【列存储学习总结】

在 OpenGauss 中&#xff0c;列存储是一种高效的数据存储方式&#xff0c;它在处理分析查询和数据仓库工作负载时具有很高的性能优势。列存储将表中的数据按列存储在磁盘上&#xff0c;而不是按行存储&#xff0c;这样可以极大地提高数据读取和分析操作的效率。当涉及大量数据的…...

小记java正则表达式中matcher.find() 和 matcher.matches() 的区别

matcher.find() 顾名思义&#xff0c;find为查找&#xff0c;其功能为查找字符串中是否有符合条件的字串&#xff08;包含本身&#xff09;&#xff0c;当查找到时即返回true&#xff0c;更多地与matcher.group(int i) 配合使用&#xff0c;用于从字符串中取出特定字串。 mat…...

当中国走进全球化的“深水区”,亚马逊云科技解码云时代的中国式跃升

中国跨境贸易中支付金融与服务领域的综合创新型企业连连国际的联席CEO沈恩光发现&#xff0c;眼下&#xff0c;很多跨境电商的出海方式已发生了变化。几年前&#xff0c;它们还主要借助第三方电商平台&#xff0c;而现在&#xff0c;更多公司开始选择通过自主渠道进入海外市场&…...

2026.4.7总结

工作日精进&#xff1a;这个月在心声上看到许多离职的帖子&#xff0c;估计是有很多拿完年终奖离职的。看到别人写的离职感悟&#xff0c;我多少有些共情。当有一天&#xff0c;我离职的时候&#xff0c;我也要写一篇长篇大论。早上HR跟入职一两年的人解读了esop相关政策。这政…...

开箱即用!Qwen3-VL-8B AI聊天系统一键启动,小白也能玩转

开箱即用&#xff01;Qwen3-VL-8B AI聊天系统一键启动&#xff0c;小白也能玩转 1. 项目概览&#xff1a;你的智能聊天助手 想象一下&#xff0c;你刚拿到一个功能强大的AI聊天系统&#xff0c;不需要任何复杂配置&#xff0c;就像打开一个新买的智能音箱一样简单。这就是Qwe…...

项目性能优化实践:深入FMP算法原理探索

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

rustaceanvim 代码操作与宏扩展:提升 Rust 开发效率的实用方法

rustaceanvim 代码操作与宏扩展&#xff1a;提升 Rust 开发效率的实用方法 【免费下载链接】rustaceanvim &#x1f980; Supercharge your Rust experience in Neovim! A heavily modified fork of rust-tools.nvim 项目地址: https://gitcode.com/gh_mirrors/ru/rustaceanv…...

PyCharm 是 JetBrains 推出的专业 Python 集成开发环境(IDE),分为免费的 Community 版和功能更全面的 Professional 版

PyCharm 是 JetBrains 推出的专业 Python 集成开发环境&#xff08;IDE&#xff09;&#xff0c;分为免费的 Community 版和功能更全面的 Professional 版。其核心优势在于深度集成多种现代开发工具链&#xff1a; ✅ Python 支持&#xff1a;智能代码补全、实时错误检查、重构…...

别再只搜字符串了!x64dbg逆向破解卡密软件的另一种思路:从API断点MessageBoxW开始

逆向工程实战&#xff1a;突破字符串搜索局限的API断点追踪法 在逆向分析领域&#xff0c;字符串搜索常被视为破解卡密验证的"第一板斧"。但当你面对一个精心设计的商业软件时&#xff0c;这招往往会失灵——字符串被混淆、关键提示信息被加密、甚至整个代码段都被加…...

WRF-CHEM 实战指南(一):MEIC清单的获取、适配与namelist关键配置

1. MEIC排放清单&#xff1a;WRF-CHEM模拟的起点 刚开始接触WRF-CHEM时&#xff0c;最让我头疼的就是找不到合适的人为排放源数据。国内研究常用的MEIC清单&#xff08;Multi-resolution Emission Inventory for China&#xff09;虽然权威&#xff0c;但实际操作中会遇到各种&…...

OpenClaw技能组合技:用SecGPT-14B实现ATTCK框架检测

OpenClaw技能组合技&#xff1a;用SecGPT-14B实现ATT&CK框架检测 1. 为什么需要自动化安全检测 去年处理某次安全事件时&#xff0c;我花了整整三天手工比对日志中的异常行为与ATT&CK框架。这种重复劳动让我开始思考&#xff1a;能否让AI自动完成TTPs&#xff08;战术…...

保姆级教程:为嵌入式Linux(ARM/AArch64)交叉编译带完整符号支持的Perf工具

ARM架构嵌入式Linux系统性能调优实战&#xff1a;Perf工具深度定制指南 在嵌入式系统开发中&#xff0c;性能优化往往是最具挑战性的环节之一。当你的应用在ARM或AArch64架构的嵌入式设备上运行时出现卡顿、延迟或资源耗尽&#xff0c;传统的打印调试和日志分析往往难以定位深…...

被忽视的性能金矿:如何释放笔记本90%隐藏算力

被忽视的性能金矿&#xff1a;如何释放笔记本90%隐藏算力 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, and …...