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

go语言学习之旅之Go语言基础语法二

学无止境,今天继续学习go语言的基础语法

变量(Variables):

  1. 变量声明:

    var x int
    
  2. 变量初始化:

    var x int = 10
    

    或者可以使用类型推断:

    x := 10
    
  3. 多变量声明:

    var a, b, c int
    
  4. 同时初始化多个变量:

    var a, b, c = 1, 2, 3
    
  5. 全局变量:
    在函数外部声明的变量是全局变量。

常量(Constants):

  1. 常量声明:

    const pi = 3.14159
    
  2. 多常量声明:

    const (a = 1b = 2c = 3
    )
    
  3. 枚举常量:

    const (Sunday    = iota // 0Monday           // 1Tuesday          // 2Wednesday        // 3Thursday         // 4Friday           // 5Saturday         // 6
    )
    
  4. 自增常量:

    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 循环,但你可以使用 forbreak 来模拟它:

package mainimport "fmt"func main() {// 模拟 do-while 循环i := 0for {fmt.Println(i)i++if i >= 5 {break}}
}

这些示例覆盖了Go语言中的条件语句和循环语句。

相关文章:

go语言学习之旅之Go语言基础语法二

学无止境&#xff0c;今天继续学习go语言的基础语法 变量&#xff08;Variables&#xff09;: 变量声明&#xff1a; var x int变量初始化&#xff1a; var x int 10或者可以使用类型推断&#xff1a; x : 10多变量声明&#xff1a; var a, b, c int同时初始化多个变量&#…...

七天.NET 8操作SQLite入门到实战 - SQLite 简介

什么是SQLite&#xff1f; SQLite是一个轻量级的嵌入式关系型数据库&#xff0c;它以一个小型的C语言库的形式存在。它的设计目标是嵌入式的&#xff0c;而且已经在很多嵌入式产品中使用了它&#xff0c;它占用资源非常的低&#xff0c;在嵌入式设备中&#xff0c;可能只需要几…...

问题 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、会议系统项目 项目介绍 提示&#xff1a;可以简单介绍IT技术发展的背景 面试准备 开发 实施 产品 2、医疗项目 项目介绍 提示&#xff1a;可以谈谈你认为IT行业就业方向有哪些&#xff0c;并说出你认为最好的就业领域是什么&#xff1f; 面试准备 开发 实施 产品 3、数字化交…...

Windows 安装 Docker

目录 前言安装 WSL2WSL2 简介系统要求安装步骤 安装 Docker Desktop下载安装验证 安装 Docker Compose结语开源项目 前言 下图展示了在 Windows 系统上安装 Docker&#xff0c;并利用Docker Compose一键搭建 youlai-mall 微服务商城所需的环境。本篇将先介绍 Windows 上如何安…...

AI绘画使用Stable Diffusion(SDXL)绘制三星堆风格的图片

一、前言 三星堆文化是一种古老的中国文化&#xff0c;它以其精湛的青铜铸造技术闻名&#xff0c;出土文物中最著名的包括青铜面具、青铜人像、金杖、玉器等。这些文物具有独特的艺术风格&#xff0c;显示了高度的工艺水平和复杂的社会结构。 青铜面具的巨大眼睛和突出的颧骨&a…...

Window下如何对Redis进行开启与关闭

目录 前言1. 图文界面2. 命令行 前言 由于长期使用Linux界面&#xff0c;对于Window下的Redis&#xff0c;不知如何下手。特此记录该博文 特别注意&#xff0c;刚下载好的Redis&#xff0c;如果需要配置密码&#xff0c;可以再该文件进行配置&#xff1a;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的应用)

给定台阶总数和两种单次可跳级数&#xff0c;编写自定义函数&#xff0c;计算所有的游戏组合方案数量。 (笔记模板由python脚本于2023年11月19日 19:18:48创建&#xff0c;本篇笔记适合熟悉python自定义函数编写&#xff0c;了解排列组合知识的coder翻阅) 【学习的细节是欢悦的…...

【Python百宝箱】Python测试工具大揭秘:从单元测试到Web自动化

前言 在现代软件开发中&#xff0c;测试是确保代码质量和稳定性的关键步骤。Python作为一门广泛应用的编程语言&#xff0c;拥有丰富的测试工具和库&#xff0c;从单元测试到Web自动化&#xff0c;覆盖了多个测试层面。本文将介绍一系列Python测试工具&#xff0c;帮助开发者选…...

〖大前端 - 基础入门三大核心之JS篇㊵〗- DOM事件监听及onxxx的使用

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…...

解锁潜力:创建支持Actions接口调用的高级GPTs

如何创建带有Actions接口调用的GPTs 在本篇博客中&#xff0c;我们将介绍如何创建一个带有Actions接口调用的GPTs &#xff0c;以及如何进行配置和使用。我们将以 https://chat.openai.com/g/g-GMrQhe7ka-gptssearch 为例&#xff0c;演示整个过程。 Ps: 数据来源&#xff1a…...

【发明专利】天洑软件再度收获六项国家发明专利授权

近日&#xff0c;南京天洑软件有限公司再度收获行业内六项国家发明专利授权&#xff0c;专利名称为&#xff1a;一种发电机绕组温度预警方法及装置&#xff08;专利号&#xff1a;ZL 2022 1 1525605.3&#xff09;&#xff0c;一种CSTR系统的控制方法及装置&#xff08;专利号&…...

Netty源码学习4——服务端是处理新连接的netty的reactor模式

零丶引入 在前面的源码学习中&#xff0c;梳理了服务端的启动&#xff0c;以及NioEventLoop事件循环的工作流程&#xff0c;并了解了Netty处理网络io重要的Channel &#xff0c;ChannelHandler&#xff0c;ChannelPipeline。 这一篇将学习服务端是如何构建新的连接。 一丶网络包…...

8、信息打点——系统篇端口扫描CDN服务负载均衡WAF

文章目录 获取网络信息获取服务信息获取阻碍信息 获取网络信息 服务器厂商信息&#xff08;阿里云&#xff1f;腾讯云&#xff1f;&#xff09; 收集的原因&#xff1a;如果服务器架设在云上&#xff0c;不同厂商的一些配置信息不同。判断方法&#xff1a;直接在ip/域名网站搜相…...

Ant Design for Figma设计系统组件库 支持变量 非社区版

Ant Design for Figma 是基于 Ant Design 设计系统的 Figma 组件库&#xff0c;提供丰富的 UI 组件和交互功能&#xff0c;帮助设计师快速构建高质量的 Figma 设计稿。 Ant Design for Figma 继承了 Ant Design 的设计理念和风格&#xff0c;提供丰富的 UI 组件和交互功能&…...

k8s的高可用集群搭建,详细过程实战版

kubernetes高可用集群的搭建 前面介绍过了k8s单master节点的安装部署 今天介绍一下k8s高可用集群搭建 环境准备&#xff1a; vip &#xff1a;192.168.121.99 keeplive master01&#xff1a;192.168.121.153 centos7 master02&#xff1a;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 是众多日志框架接口的集合(俗称日志门面)&#xff0c;它不负责具体的日志实现&#xff0c;只在编译时负责寻找合适的日志框架进行绑定,各日志框架通过扩展jar包中的适配器与slf4j建立适配 SLF4J可以和Log4j、Logback、Log4j2、JUL等日志框架配合使用&#xff0c;这里主要…...

使用ssh在本地环境(Windows)连接虚拟机以及其中的docker容器

配置虚拟机防火墙 防火墙的一系列操作需要root权限&#xff0c;默认是没有root密码的&#xff0c;所以首先需要设置root密码&#xff1a; sudo passwd root按提示完成root密码设置 切换到root账户 su root启用22端口并重启防火墙 firewall-cmd --permanent --add-port22/tc…...

微信单向好友检测终极指南:3步快速发现谁已删除或拉黑你

微信单向好友检测终极指南&#xff1a;3步快速发现谁已删除或拉黑你 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...

GitClaw:基于Git的AI智能体开发与版本控制实践

1. GitClaw&#xff1a;一个“活在”Git仓库里的AI智能体如果你和我一样&#xff0c;每天都在和代码、Git仓库以及各种AI工具打交道&#xff0c;那你肯定遇到过这样的困境&#xff1a;你精心调教了一个AI助手&#xff0c;让它帮你写代码、审阅PR&#xff0c;甚至管理项目。但当…...

从磁芯到代码:用Python和AD5934模块,亲手复现电感随频率变化的完整实验

从磁芯到代码&#xff1a;用Python和AD5934模块复现电感频率特性实验 当你在调试一个开关电源电路时&#xff0c;是否遇到过电感在数据手册标注的100kHz下工作正常&#xff0c;但在实际500kHz电路中却发热严重甚至失效的情况&#xff1f;这很可能是因为你使用的RLC表只在1kHz测…...

Alpine Linux 高效运维:从包管理到服务自启的实战指南

1. Alpine Linux 简介与优势 Alpine Linux 是一款轻量级的 Linux 发行版&#xff0c;特别适合容器化和资源受限的环境。它的核心优势在于极小的体积和高效的内存管理&#xff0c;基础镜像只有 5MB 左右&#xff0c;运行时内存占用也极低。我在多个容器化项目中实测发现&#xf…...

VoiceFixer终极指南:3分钟掌握AI语音修复技术,让受损音频重获新生

VoiceFixer终极指南&#xff1a;3分钟掌握AI语音修复技术&#xff0c;让受损音频重获新生 【免费下载链接】voicefixer General Speech Restoration 项目地址: https://gitcode.com/gh_mirrors/vo/voicefixer 你是否曾为这些音频问题而烦恼&#xff1f;珍贵的家庭录音充…...

SkillHub:企业级AI智能体技能私有注册中心部署与集成指南

1. 项目概述&#xff1a;企业级智能体技能管理平台 在AI智能体&#xff08;Agent&#xff09;技术快速渗透到企业工作流的今天&#xff0c;一个核心痛点逐渐浮现&#xff1a;如何高效、安全地管理和复用这些智能体所依赖的“技能”&#xff08;Skill&#xff09;&#xff1f;想…...

C#上位机开发实战:用Keysight VISA库控制N9310A信号发生器(附完整代码)

C#上位机开发实战&#xff1a;用Keysight VISA库控制N9310A信号发生器&#xff08;附完整代码&#xff09; 在工业自动化和测试测量领域&#xff0c;信号发生器是不可或缺的核心设备。Keysight&#xff08;是德科技&#xff09;的N9310A射频信号发生器凭借其稳定性和精确度&…...

别再只装Multisim了!完整配置NI Circuit Design Suite 14.0,解锁Ultiboard和全版本功能

解锁NI Circuit Design Suite 14.0全功能&#xff1a;从Multisim到Ultiboard的完整配置指南 在电子设计自动化&#xff08;EDA&#xff09;领域&#xff0c;NI Circuit Design Suite一直以其强大的功能和易用性受到工程师的青睐。然而&#xff0c;许多用户仅仅停留在Multisim的…...

从零到一:TMS320F28335开发环境避坑与首个工程实战

1. 开发板选购与开箱准备 第一次接触TMS320F28335时&#xff0c;我和大多数初学者一样面临"从哪开始"的困惑。经过对比多家产品&#xff0c;最终选择了普中科技的开发套件。这个选择主要基于三个实际考量&#xff1a;首先是性价比&#xff0c;199元的价格包含了XDS10…...

GRANDMICRO有容微推出GM502xx系列时钟缓冲器,专为AI/HPC计算与数据中心设计,全面支持PCIe 6.0/7.0

在人工智能、高性能计算及数据中心技术飞速发展的驱动下&#xff0c;系统对时钟信号的完整性、同步精度与抗干扰能力提出了更为严苛的要求。为应对这一挑战&#xff0c;有容微电子今日正式推出全新一代高性能时钟缓冲器芯片——GM502xx系列。该系列产品专为PCIe 6.0及未来7.0标…...