【Go每日一練】實現簡單的控制臺計算器

👻創作者:丶重明
👻創作時間:2025年3月7日
👻擅長領域:運維

目錄

  • 1.😶?🌫?題目:簡單的控制臺計算器
  • 2.😶?🌫?代碼輸出
  • 3.😶?🌫?結果輸出:
  • 4.😶?🌫?代碼解析:
  • 5.😶?🌫?本章要點:
  • 6.😶?🌫?內容擴展:

1.😶?🌫?題目:簡單的控制臺計算器

使用Go語言實現一個簡單的加、減、乘、除控制臺計算器,支持基本的數學運算。

通過這個練習可以學習Go語言的一些基本語法,如switch邏輯判斷,if邏輯判斷等使用。

設計思路比較簡單,主要分為以下幾個步驟:

  • 提示用戶輸入兩個數字
  • 提示用戶輸入運算符
  • 根據用戶輸入進行相應運算
  • 得出結果

2.😶?🌫?代碼輸出

接下來,將使用Go語言進行編寫代碼,實現簡單的計算器功能。

package mainimport "fmt"func main() {var num1, num2 float64var operator stringfmt.Println("請輸入第一個數字:")fmt.Scanln(&num1)fmt.Println("請輸入第二個數字:")fmt.Scanln(&num2)fmt.Println("請輸入運算符(+ - * /):")fmt.Scanln(&operator)switch operator {case "+":fmt.Printf("結果為: %.2f\n", num1+num2)case "-":fmt.Printf("結果為: %.2f\n", num1-num2)case "*":fmt.Printf("結果為: %.2f\n", num1*num2)case "/":if num2 == 0 {fmt.Println("出錯了~除數不能為0")} else {fmt.Printf("結果為: %.2f\n", num1/num2)}default:fmt.Println("出錯了~請輸入正確的運算符")}
}

3.😶?🌫?結果輸出:

保存代碼,通過go run命令執行代碼文件,如下所示:

> go run .\7.gotest.go
請輸入第一個數字:
5.8
請輸入第二個數字:
6.2
請輸入運算符(+ - * /):
/
結果為: 0.94

4.😶?🌫?代碼解析:

  1. 導入fmt包進行輸入輸出操作。
  2. 使用var聲明變量num1num2用于存儲數字;聲明變量operator用來存儲操作符。
  3. 使用fmt.Scanln從控制臺讀取用戶輸入的數字和操作符。
  4. 使用switch語句根據用戶輸入的操作符執行相應的運算,如果輸入的運算符不符合要求則提示錯誤。
  5. 在進行除法運算時,加入判斷邏輯除數不能為0,如果為0則提示錯誤。

5.😶?🌫?本章要點:

fmt.Scanln

作用是從標準輸入讀取一行數據,并嘗試將其解析為合適的類型,與Scan的區別是遇到換行符時會停止讀取。

switch 表達式 {
case1:// 當表達式的值等于值1時執行的代碼
case2:// 當表達式的值等于值2時執行的代碼
// 可以有更多的 case 分支
default:// 當表達式的值與所有 case 的值都不匹配時執行的代碼
}

在表達式switch中,switch后面的表達式會被求值,然后依次與每個case后面的值進行比較。

如果匹配成功,則執行該 case 后面的代碼塊,并且在執行完后會自動跳出switch語句,不需要使用break語句(Go 語言的 switch 語句默認自帶 break 效果)。

如果所有case都不匹配,則執行default分支(default 分支是可選的)。

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

if語句可以和else語句結合使用,當if條件表達式的值為false時,會執行else語句后面的代碼塊。

6.😶?🌫?內容擴展:

這個簡單計算器案例有很多擴展的地方,以下是一些可以考慮的擴展方向:

  • 支持更多運算 ,如冪運算(^)、平方根(sqrt)
  • 實現括號運算,有括號時候先算括號里的
  • 支持科學運算,比如三角函數、指數等

同系列:

上一篇:【Go每日一練】構建一個簡單的用戶信息管理系統

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

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

相關文章

Linux常見問題與分析

操作系統進行線程切換時進行的動作 1. 保存當前線程的上下文 寄存器狀態:保存 CPU 寄存器(如通用寄存器、程序計數器 PC、棧指針 SP 等)到當前線程的 線程控制塊(TCB) 中。內核棧信息:如果線程在內核態運…

HTML塊級元素和內聯元素(簡單易懂)

在HTML中,元素可以分為塊級元素(Block-level elements)和內聯元素(Inline elements)。這兩類元素在頁面布局和樣式應用上有不同的特點和用途。 一、塊級元素(Block-level elements) 1. 定義 …

VSTO(C#)Excel開發6:與窗體交互

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github:codetoys,所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的,可以在任何平臺上使用。 源碼指引:github源…

Node.js與VUE安裝

目錄 Win下載安裝 Mac下載安裝 Win與Mac配置檢查是否安裝成功切換淘寶NPM庫檢查鏡像配置是否生效設置 npm 全局環境目錄(避免權限問題)WinMac VUE CLI安裝安裝驗證打開vue面板 Vue腳手架npm init vuelatest、npm create vuelatestvue create、vue ui Win…

快速集成1688商品API:10分鐘實現跨境選品數據自動化

要快速集成 1688 商品 API 以實現跨境選品數據自動化,可參考以下步驟: 注冊并申請 API 權限:注冊賬號創建應用并申請所需的 API 權限,如商品搜索、篩選、獲取詳情等相關權限。獲取 API Key 和 Secret:在應用管理頁面獲…

解決 MySQL 遷移到達夢報錯 “無效的列名” 的問題

在數據庫遷移的過程中,常常會遇到各種各樣的問題。本文將聚焦于從源庫 MySQL(大小寫不敏感)遷移到目標庫達夢(大小寫敏感)時,出現的創建索引報錯 “無效的列名” 這一問題,使用SQLark工具如何避…

工程化與框架系列(31)--前端依賴管理實踐

前端依賴管理實踐 📦 引言 前端依賴管理是現代Web開發中的重要環節。本文將深入探討前端依賴管理的最佳實踐,包括包管理工具、版本控制、依賴分析和優化等方面,幫助開發者更好地管理項目依賴。 依賴管理概述 前端依賴管理主要包括以下方面…

C/C++都有哪些開源的Web框架?

CppCMS CppCMS是一個采用C語言開發的高性能Web框架,通過模版元編程方式實現了在編譯期檢查RESTful路由系統,支持傳統的MVC模式和多種語言混合開發模式。 CppCMS最厲害的功能是WebSocket,10萬連接在內存中長期保存占用的大小不超過600MB&…

數據結構——環形數組

環形數組 start 指向第一個有效元素的索引,end 指向最后一個有效元素的下一個位置索引。 注意: start是閉區間,先左移后賦值,先賦值(null)后右移;end是開區間,先賦值再右移,先左移再賦值(null…

大數據學習(59)-DataX執行機制

&&大數據學習&& 🔥系列專欄: 👑哲學語錄: 承認自己的無知,乃是開啟智慧的大門 💖如果覺得博主的文章還不錯的話,請點贊👍收藏??留言📝支持一下博主哦&#x1f91…

云原生性能測試全解析:如何構建高效穩定的現代應用?

一、引言 隨著云計算技術的快速發展,云原生(Cloud Native)架構成為現代應用開發的主流模式。云原生應用通常采用微服務架構、容器化部署,并利用 Kubernetes(K8s)等編排工具進行管理。然而,云原…

golang的Map

Map集合 概述 Map 是一種無序的鍵值對的集合。 Map 最重要的一點是通過 key 來快速檢索數據,key 類似于索引,指向數據的值。 Map 是一種集合,所以我們可以像迭代數組和切片那樣迭代它。不過,Map 是無序的,遍歷 Map…

USB數據采集卡 Labview采集卡 32路AD模擬量采集 DAQ卡

今天給大家介紹阿爾泰科技的一款多功能數據采集卡USB3150/1/2/5/6 。 該板卡提供 32RSE / NRSE 通道或 16 通道 DIFF 模 擬量輸入;4 通道模擬量同步輸出;16 路可編程 I/O;2 路計數器。 USB3150/1/2/5/6 的主要應用場合為:電子產品…

K8s 1.27.1 實戰系列(十)PV PVC

一、核心概念與關系 ?1、PV(Persistent Volume)? PV 是集群中的持久化存儲資源,由管理員預先創建并配置,獨立于 Pod 生命周期。它抽象了底層存儲(如 NFS、云存儲等),定義存儲容量、訪問模式(如 ReadWriteOnce)、回收策略(Retain/Delete/Recycle)等屬性。例如,一…

基于DeepSeek的智能數據分析和自動化處理系統:引領BI行業新變革

近期,一款基于DeepSeek API的智能數據分析和自動化處理系統橫空出世,以其強大的功能和靈活的可擴展性,為BI行業帶來了顛覆性的變革。 該系統支持多類型數據分析,包括文本 、指標和日志等。在文本分析方面,它能夠提取關…

圖形學面試題總結

圖形學面試題總結 文章目錄 圖形學面試題總結Opengl 與 Vulkan1、OpenGL的渲染管線有哪些主要階段?分別做什么?2、OpenGL中的VAO、VBO和EBO分別是什么?為什么需要它們?3、細分著色器與幾何著色器是什么4、Vulkan與Opengl的區別是什…

Vue 系列之:路由

vue-router 組件 router-link 功能&#xff1a;用于導航&#xff0c;即渲染一個鏈接&#xff0c;當點擊時&#xff0c;導航到由 to 屬性指定的 URL。 示例&#xff1a;<router-link to"/home">Home</router-link> 它會渲染為一個 <a> 標簽&…

通過mybatis的攔截器對SQL進行打標

1、背景 在我們開發的過程中&#xff0c;一般需要編寫各種SQL語句&#xff0c;萬一生產環境出現了慢查詢&#xff0c;那么我們如何快速定位到底是程序中的那個SQL出現的問題呢&#xff1f; 2、解決方案 如果我們的數據訪問層使用的是mybatis的話&#xff0c;那么我們可以通過…

【Linux】centos配置可用的yum源

在 CentOS 系統中配置可用的 YUM 源&#xff08;倉庫&#xff09;是保持系統更新和軟件包管理的重要步驟。下面是一些步驟和示例&#xff0c;幫助你配置可用的 YUM 源&#xff1a; 1. 備份當前 YUM 倉庫配置 首先&#xff0c;備份你當前的 YUM 倉庫配置文件&#xff0c;以防萬…

【CentOS】搭建Radius服務器

目錄 背景簡介&#xff1a;Radius是什么&#xff1f;Radius服務器驗證原理搭建Radius服務器環境信息yum在線安裝配置FreeRADIUS相關文件clients.conf文件users文件重啟服務 驗證 參考鏈接 背景 在項目中需要用到Radius服務器作為數據庫代理用戶的外部驗證服務器&#xff0c;做…