go语言学习之旅之Go语言基础语法二
学无止境,今天继续学习go语言的基础语法
变量(Variables):
-
变量声明:
var x int -
变量初始化:
var x int = 10或者可以使用类型推断:
x := 10 -
多变量声明:
var a, b, c int -
同时初始化多个变量:
var a, b, c = 1, 2, 3 -
全局变量:
在函数外部声明的变量是全局变量。
常量(Constants):
-
常量声明:
const pi = 3.14159 -
多常量声明:
const (a = 1b = 2c = 3 ) -
枚举常量:
const (Sunday = iota // 0Monday // 1Tuesday // 2Wednesday // 3Thursday // 4Friday // 5Saturday // 6 ) -
自增常量:
const (x = iota * 10yz ) // x=0, y=10, z=20
这里是一个简单的例子,演示了变量和常量的使用:
package mainimport "fmt"func main() {// 变量var age intage = 30name := "Alice"// 常量const pi = 3.14159fmt.Println("Name:", name)fmt.Println("Age:", age)fmt.Println("Pi:", pi)
}
运算符
Go语言支持各种运算符,包括算术运算符、关系运算符、逻辑运算符等。以下是一些常见的Go语言
算术运算符:
+:加法-:减法*:乘法/:除法%:取余
关系运算符:
==:等于!=:不等于<:小于>:大于<=:小于等于>=:大于等于
逻辑运算符:
&&:逻辑与||:逻辑或!:逻辑非
位运算符:
&:按位与|:按位或^:按位异或<<:左移>>:右移
赋值运算符:
=:赋值+=:加并赋值-=:减并赋值*=:乘并赋值/=:除并赋值%=:取余并赋值&=:按位与并赋值|=:按位或并赋值^=:按位异或并赋值<<=:左移并赋值>>=:右移并赋值
其他运算符:
&:取地址*:指针解引用<-:用于通道操作符
示例:
package mainimport "fmt"func main() {// 算术运算符a := 10b := 20fmt.Println("a + b =", a+b)fmt.Println("a - b =", a-b)fmt.Println("a * b =", a*b)fmt.Println("a / b =", a/b)fmt.Println("a % b =", a%b)// 关系运算符fmt.Println("a == b is", a == b)fmt.Println("a != b is", a != b)fmt.Println("a < b is", a < b)fmt.Println("a > b is", a > b)fmt.Println("a <= b is", a <= b)fmt.Println("a >= b is", a >= b)// 逻辑运算符x := truey := falsefmt.Println("x && y is", x && y)fmt.Println("x || y is", x || y)fmt.Println("!x is", !x)// 位运算符fmt.Println("a & b =", a&b)fmt.Println("a | b =", a|b)fmt.Println("a ^ b =", a^b)fmt.Println("a << 1 =", a<<1)fmt.Println("a >> 1 =", a>>1)// 赋值运算符c := 5c += 3fmt.Println("c += 3 is", c)// 其他运算符pointer := &afmt.Println("Address of a:", pointer)fmt.Println("Value at address:", *pointer)
}
这只是一些常见的运算符,Go语言还有其他一些运算符,如通道操作符 <- 用于发送和接收数据。
Go语言提供了常见的条件语句和循环语句,包括if语句、switch语句、for语句等。
条件语句:
1. if 语句:
package mainimport "fmt"func main() {x := 10// 基本的 if 语句if x > 5 {fmt.Println("x is greater than 5")}// if-else 语句if x > 5 {fmt.Println("x is greater than 5")} else {fmt.Println("x is not greater than 5")}// if-else if-else 语句if x > 5 {fmt.Println("x is greater than 5")} else if x < 5 {fmt.Println("x is less than 5")} else {fmt.Println("x is equal to 5")}
}
2. switch 语句:
package mainimport "fmt"func main() {day := "Monday"switch day {case "Monday":fmt.Println("It's Monday!")case "Tuesday":fmt.Println("It's Tuesday!")case "Wednesday":fmt.Println("It's Wednesday!")default:fmt.Println("It's some other day.")}// 使用 switch 表达式num := 5switch {case num > 0:fmt.Println("Positive")case num < 0:fmt.Println("Negative")default:fmt.Println("Zero")}
}
循环语句
1. for 循环:
package mainimport "fmt"func main() {// 基本的 for 循环for i := 0; i < 5; i++ {fmt.Println(i)}// for 循环用于迭代数组或切片numbers := []int{1, 2, 3, 4, 5}for index, value := range numbers {fmt.Printf("Index: %d, Value: %d\n", index, value)}// 无限循环// for {// fmt.Println("This will run forever.")// // 可以使用 break 或 return 语句来退出无限循环// }
}
2. while 循环:
Go语言中没有专门的 while 关键字,但你可以使用 for 来实现相同的效果:
package mainimport "fmt"func main() {// 模拟 while 循环i := 0for i < 5 {fmt.Println(i)i++}
}
3. do-while 循环:
Go语言中也没有 do-while 循环,但你可以使用 for 和 break 来模拟它:
package mainimport "fmt"func main() {// 模拟 do-while 循环i := 0for {fmt.Println(i)i++if i >= 5 {break}}
}
这些示例覆盖了Go语言中的条件语句和循环语句。
相关文章:
go语言学习之旅之Go语言基础语法二
学无止境,今天继续学习go语言的基础语法 变量(Variables): 变量声明: var x int变量初始化: var x int 10或者可以使用类型推断: x : 10多变量声明: var a, b, c int同时初始化多个变量&#…...
七天.NET 8操作SQLite入门到实战 - SQLite 简介
什么是SQLite? SQLite是一个轻量级的嵌入式关系型数据库,它以一个小型的C语言库的形式存在。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几…...
问题 R: 胜利大逃亡(HUST)
#include <deque> #define inf 200000 #include<iostream> #include<queue> using namespace std;// 迷宫坐标 int map[59][59][59] { 0 };// 可访问标记 int visit[51][51][51] { 0 }; // 移动方式 int next1[7][4] { {1,0,0},{-1,0,0}, {0,1,0},{0,-1,…...
项目讲解:让你在IT行业面试中以开发、实施、产品更近一步
1、会议系统项目 项目介绍 提示:可以简单介绍IT技术发展的背景 面试准备 开发 实施 产品 2、医疗项目 项目介绍 提示:可以谈谈你认为IT行业就业方向有哪些,并说出你认为最好的就业领域是什么? 面试准备 开发 实施 产品 3、数字化交…...
Windows 安装 Docker
目录 前言安装 WSL2WSL2 简介系统要求安装步骤 安装 Docker Desktop下载安装验证 安装 Docker Compose结语开源项目 前言 下图展示了在 Windows 系统上安装 Docker,并利用Docker Compose一键搭建 youlai-mall 微服务商城所需的环境。本篇将先介绍 Windows 上如何安…...
AI绘画使用Stable Diffusion(SDXL)绘制三星堆风格的图片
一、前言 三星堆文化是一种古老的中国文化,它以其精湛的青铜铸造技术闻名,出土文物中最著名的包括青铜面具、青铜人像、金杖、玉器等。这些文物具有独特的艺术风格,显示了高度的工艺水平和复杂的社会结构。 青铜面具的巨大眼睛和突出的颧骨&a…...
Window下如何对Redis进行开启与关闭
目录 前言1. 图文界面2. 命令行 前言 由于长期使用Linux界面,对于Window下的Redis,不知如何下手。特此记录该博文 特别注意,刚下载好的Redis,如果需要配置密码,可以再该文件进行配置:redis.windows-servi…...
C++ Qt 学习(十):Qt 其他技巧
1. 带参数启动外部进程 QProcess 用于启动外部进程int QProcess::execute(const QString &program, const QStringList &arguments);QObject *parent; ... QString program "./path/to/Qt/examples/widgets/analogclock"; QStringList arguments; argument…...
跳台阶游戏(Python排列组合函数itertools.combinations的应用)
给定台阶总数和两种单次可跳级数,编写自定义函数,计算所有的游戏组合方案数量。 (笔记模板由python脚本于2023年11月19日 19:18:48创建,本篇笔记适合熟悉python自定义函数编写,了解排列组合知识的coder翻阅) 【学习的细节是欢悦的…...
【Python百宝箱】Python测试工具大揭秘:从单元测试到Web自动化
前言 在现代软件开发中,测试是确保代码质量和稳定性的关键步骤。Python作为一门广泛应用的编程语言,拥有丰富的测试工具和库,从单元测试到Web自动化,覆盖了多个测试层面。本文将介绍一系列Python测试工具,帮助开发者选…...
〖大前端 - 基础入门三大核心之JS篇㊵〗- DOM事件监听及onxxx的使用
说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作…...
解锁潜力:创建支持Actions接口调用的高级GPTs
如何创建带有Actions接口调用的GPTs 在本篇博客中,我们将介绍如何创建一个带有Actions接口调用的GPTs ,以及如何进行配置和使用。我们将以 https://chat.openai.com/g/g-GMrQhe7ka-gptssearch 为例,演示整个过程。 Ps: 数据来源:…...
【发明专利】天洑软件再度收获六项国家发明专利授权
近日,南京天洑软件有限公司再度收获行业内六项国家发明专利授权,专利名称为:一种发电机绕组温度预警方法及装置(专利号:ZL 2022 1 1525605.3),一种CSTR系统的控制方法及装置(专利号&…...
Netty源码学习4——服务端是处理新连接的netty的reactor模式
零丶引入 在前面的源码学习中,梳理了服务端的启动,以及NioEventLoop事件循环的工作流程,并了解了Netty处理网络io重要的Channel ,ChannelHandler,ChannelPipeline。 这一篇将学习服务端是如何构建新的连接。 一丶网络包…...
8、信息打点——系统篇端口扫描CDN服务负载均衡WAF
文章目录 获取网络信息获取服务信息获取阻碍信息 获取网络信息 服务器厂商信息(阿里云?腾讯云?) 收集的原因:如果服务器架设在云上,不同厂商的一些配置信息不同。判断方法:直接在ip/域名网站搜相…...
Ant Design for Figma设计系统组件库 支持变量 非社区版
Ant Design for Figma 是基于 Ant Design 设计系统的 Figma 组件库,提供丰富的 UI 组件和交互功能,帮助设计师快速构建高质量的 Figma 设计稿。 Ant Design for Figma 继承了 Ant Design 的设计理念和风格,提供丰富的 UI 组件和交互功能&…...
k8s的高可用集群搭建,详细过程实战版
kubernetes高可用集群的搭建 前面介绍过了k8s单master节点的安装部署 今天介绍一下k8s高可用集群搭建 环境准备: vip :192.168.121.99 keeplive master01:192.168.121.153 centos7 master02:192.168.121.154 centos7 master03&a…...
【20年扬大真题】编写对数组求逆的递归算法
【20年扬大真题】 编写对数组求逆的递归算法 void swap(int* a, int* b) {int tmp *b;*b *a;*a tmp; } void Ni(int arr[],int left,int right) {if (left > right) {return;}swap(&arr[left], &arr[right]);Ni(arr, left 1, right - 1); } int main() {int ar…...
日志门面slf4j与常用的日志框架Log4j,Logback和Log4j2
slf4j 是众多日志框架接口的集合(俗称日志门面),它不负责具体的日志实现,只在编译时负责寻找合适的日志框架进行绑定,各日志框架通过扩展jar包中的适配器与slf4j建立适配 SLF4J可以和Log4j、Logback、Log4j2、JUL等日志框架配合使用,这里主要…...
使用ssh在本地环境(Windows)连接虚拟机以及其中的docker容器
配置虚拟机防火墙 防火墙的一系列操作需要root权限,默认是没有root密码的,所以首先需要设置root密码: sudo passwd root按提示完成root密码设置 切换到root账户 su root启用22端口并重启防火墙 firewall-cmd --permanent --add-port22/tc…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
