Go語言中的if else控制語句

if else是Go語言中最基礎也最常用的條件控制語句,用于根據條件執行不同的代碼塊。下面我將詳細介紹Go語言中if else的各種用法和特性。

1.?基本語法

1.1. 最簡單的if語句

if 條件表達式 {// 條件為true時執行的代碼
}

示例:

if x > 10 {fmt.Println("x大于10")
}

1.2. if-else語句

if 條件表達式 {// 條件為true時執行的代碼
} else {// 條件為false時執行的代碼
}

示例:

if x > 10 {fmt.Println("x大于10")
} else {fmt.Println("x不大于10")
}

1.3.?if-else多分支語句

if 條件表達式1 {// 條件1為true時執行的代碼
} else if 條件表達式2 {// 條件2為true時執行的代碼
} else {// 所有條件都為false時執行的代碼
}

示例:

if score >= 90 {fmt.Println("優秀")
} else if score >= 80 {fmt.Println("良好")
} else if score >= 60 {fmt.Println("及格")
} else {fmt.Println("不及格")
}

2.?特殊用法

2.1. 在if條件前執行簡單語句

Go語言的if語句支持在條件表達式前執行一個簡單的語句,通常是短變量聲明,該語句聲明的變量作用域僅限于if語句塊內。

if 簡單語句; 條件表達式 {// 代碼塊
}

示例:

if x := getValue(); x > 10 {fmt.Println("x大于10")
} else {fmt.Println("x值為", x)
}
// 這里不能訪問x

2.2. 嵌套if語句

if語句可以嵌套使用:

if 條件1 {if 條件2 {// 代碼塊}
}

示例:

if x > 10 {if y > 20 {fmt.Println("x>10且y>20")}
}

3.?注意事項

1. 條件表達式不需要括號:Go語言的if條件表達式不需要用括號括起來,但代碼塊的花括號是必須的;

2.?花括號位置:Go語言要求if和else后面的花括號必須與條件表達式在同一行。例如:

if x > 10 {// 正確
}if x > 10 
{ // 錯誤,會編譯失敗
}

3.?else必須與if的右花括號同行:

if x > 10 {// 代碼
} else { // else必須這樣寫// 代碼
}

4.?零值判斷:在Go中,可以直接使用變量作為條件,它會自動判斷是否為該類型的零值:

var s string
if s { // 相當于 if s != ""// ...
}var n int
if n { // 相當于 if n != 0// ...
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86700.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86700.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86700.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Spring]-AOP

AOP場景 AOP: Aspect Oriented Programming (面向切面編程) OOP: Object Oriented Programming (面向對象編程) 場景設計 設計: 編寫一個計算器接口和實現類,提供加減乘除四則運算 需求: 在加減乘除運算的時候需要記錄操作日志(運算前參數、運算后結果)實現方案:…

Web3 借貸與清算機制全解析:鏈上金融的運行邏輯

Web3 借貸與清算機制全解析:鏈上金融的運行邏輯 超額抵押借款 例如,借款人用ETH為抵押借入DAI;借款人的ETH的價值一定是要超過DAI的價值;借款人可以任意自由的使用自己借出的DAI 穩定幣 第一步:借款人需要去提供一定…

RK3588開發筆記-GNSS-RTK模塊調試

目錄 前言 一、什么是GNSS/RTK 二、硬件連接 三、內核配置 四、模塊調試 五、ntripclient使用 總結 前言 在RK3588平臺上集成高精度定位功能是許多工業級應用的需求。本文記錄了我調試GNSS-RTK模塊的全過程,包含硬件連接、驅動移植、數據解析和精度優化等關鍵環節,希望對…

Vue.js $emit的介紹和簡單使用

前言 在 Vue.js 開發中,組件化是核心思想之一。但組件間的通信是一個重要課題,特別是子組件向父組件傳遞數據的場景。Vue 提供了多種通信方式,而$emit正是實現子→父通信的關鍵方法。本文將深入解析$emit的原理、使用場景及最佳實踐。 一、$e…

【Linux 學習計劃】-- 簡易版shell編寫

目錄 思路 創建自己的命令行 獲取用戶命令 分割命令 檢查是否是內建命令 cd命令實現 進程程序替換執行程序 總代碼 結語 思路 int main() {while (1){// 1. 自己的命令行PrintCommandLine();// 2. 獲取用戶命令char command[SIZE];int n GetUserCommand(command, si…

一個完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (二)

📄 本地 Windows 部署 Logstash 連接本地 Elasticsearch 指南 ? 目標 在本地 Windows 上安裝并運行 Logstash配置 Logstash 將數據發送至本地 Elasticsearch測試數據采集與 ES 存儲流程 🧰 前提條件 軟件版本要求安裝說明Java17Oracle JDK 下載 或 O…

Java使用Selenium反爬蟲優化方案

當我們爬取大站的時候,就得需要對抗反爬蟲機制的場景,因為項目要求使用Java和Selenium。Selenium通常用于模擬用戶操作,但效率較低,所以需要我們結合其他技術來實現高效。 在 Java 中使用 Selenium 進行高效反爬蟲對抗時&#xff…

狀態管理方案對比與決策

1. 狀態管理的基本概念 現代前端應用隨著功能復雜度提升,狀態管理已成為架構設計的核心挑戰。狀態管理本質上解決的是數據的存儲、變更追蹤和響應式更新問題,以確保UI與底層數據保持同步。 核心挑戰: 狀態共享與組件通信可預測的狀態變更性能優化與重…

Fetch與Axios:區別、聯系、優缺點及使用差異

Fetch與Axios:區別、聯系、優缺點及使用差異 文章目錄 Fetch與Axios:區別、聯系、優缺點及使用差異一、聯系二、區別1. 瀏覽器支持與兼容性2. 響應處理3. 請求攔截和響應攔截4. 錯誤處理 三、優缺點1. Fetch API優點缺點 2. Axios優點缺點 四、使用上的差…

【Docker】快速入門與項目部署實戰

我們在部署一個項目時,會出現一系列問題比如: 命令太多了,記不住軟件安裝包名字復雜,不知道去哪里找安裝和部署步驟復雜,容易出錯 其實上述問題不僅僅是新手,即便是運維在安裝、部署的時候一樣會覺得麻煩…

Java面試題尚硅谷版第1季

1、寫出如下代碼運行結果 1.1、 使用局部變量表和操作數棧解題 1.2、使用前置和后置遞增解題 2、寫一個單例模式 2.1、考察知識點 2.2、單例模式實現 3、類加載和初始化順序 package classload;public class Father {private int i test();private static int j method();st…

關于Qt阻斷樣式繼承的解決辦法

引言 在使用 Qt 開發桌面應用時,借助樣式表(StyleSheet)來統一定義界面風格是非常常見的做法。通常,你會在主程序中通過 qApp->setStyleSheet(...) 或者直接給某個父控件設置樣式表,讓所有的子控件都采用相同的配色…

鼠標右鍵添加新建某種文件的方法

場景 我經常用到.emmx,.eddx文件,電腦上裝的是wpsX億圖(因為有wps會員),沒有開億圖會員。 然后問題就是,思維導圖和流程圖我都能正常開,正常編輯,但鼠標右鍵沒有新建這兩個文件的按…

Inxpect安全雷達傳感器與控制器:動態檢測 + 抗干擾技術重構工業安全防護體系

Inxpect 推出工業安全領域新型智能傳感器與控制器,其核心產品為雷達掃描儀,具備動態調整檢測區域、抗干擾能力強等特點,可精準檢測危險區域人員進入或存在情況,適用于移動機器人等場景。 Inxpect安全雷達傳感器核心功能 動態檢測…

【AI學習】李廣密與階躍星辰首席科學家張祥雨對談:多模態發展的歷史和未來

仔細閱讀了文章《專訪張祥雨:多模態推理和自主學習是未來的 2 個 「GPT-4」 時刻》 https://mp.weixin.qq.com/s/892QuRPH9uP6zN6dS-HZMw 非常贊嘆的一篇文章,說清楚了NLP、CV發展中的許多重大問題,讀來醍醐灌頂!這樣的文章&…

C++中std::deque詳解和實戰工程代碼示例

C中std::deque詳解和實戰工程代碼示例 std::deque(雙端隊列)是 C 標準庫中的一個序列容器,與 std::vector 類似,但它支持從頭部和尾部高效地插入和刪除元素。它底層采用分段連續空間實現,兼具靈活性與性能。 一、基本…

【AI大模型入門指南】概念與專有名詞詳解 (二)

【AI大模型入門指南】概念與專有名詞詳解 (二) 一 、前言 當你和聊天機器人聊得天花亂墜時,當你用文字讓AI生成精美圖片時,當手機相冊自動幫你分類照片時 —— 這些看似智能的操作背后,都藏著 AI 大模型的身影。 本…

AIStor 的模型上下文協議 (MCP) 服務器:管理功能

在本系列的上一篇博文中,我們討論了 MinIO AIStor 的模型上下文協議 (MCP) 服務器的基本用戶級功能。我們學習了如何使用人類語言命令查看存儲桶的內容、分析對象并標記它們以便將來處理,以及如何通過 LLM(例如 Anthropic Claude)…

期權末日輪實值期權盈利未平倉怎么辦?

本文主要介紹期權末日輪實值期權盈利未平倉怎么辦?期權末日輪實值期權盈利未平倉該怎么辦,需要明確幾個關鍵點:末日輪指的是期權到期日臨近的時候,通常指最后一周,尤其是最后一天,這時候時間價值衰減很快&a…

C++/Qt 聯合編程中的定時器使用陷阱:QObject::startTimer 報錯詳解

在 Qt 開發中,QTimer 是一個常用的工具類,用于處理定時事件。但不少開發者在 C/Qt 聯合編程,尤其是在工具類、靜態類、線程中使用定時器時,會遇到如下令人困惑的報錯: QObject::startTimer: Timers can only be used …