Go語言中的數據類型轉換

Go 語言中只有強制類型轉換,沒有隱式類型轉換。

1. 數值類型之間的相互轉換

1.1.?整型和整型之間的轉換

package main
import "fmt"func main() {var a int8 = 20var b int16 = 40fmt.Println(int16(a) + b)// 60
}

1.2.?浮點型和浮點型之間的轉換

package main
import "fmt"func main() {var a float32 = 20var b float64 = 40fmt.Println(float64(a) + b)// 60
}

1.3.?整型和浮點型之間的轉換

package main
import "fmt"func main() {var a float32 = 20.23var b int = 40fmt.Println(a + float32(b))// 60.23
}

注意:轉換的時候建議從低位轉換成高位,高位轉換成低位的時候如果轉換不成功就會溢出,和我們想的結果不一樣。

package main
func main() {var a int16 = 129var b = int8(a) // 范圍 -128 到 127println("b=", b) // b= -127
}
比如:計算直角三角形的斜邊長時使用 math 包的 Sqrt()函數,該函數接收的是 float64 類型的 參數,而變量 a 和 b 都是 int 類型的,這個時候就需要將 a 和 b 強制類型轉換為 float64 類型。
package main
import "fmt"
import "math"
func main() {var a, b = 3, 4var c int// math.Sqrt()接收的參數是 float64 類型,需要強制轉換c = int(math.Sqrt(float64(a*a + b*b)))fmt.Println(c)// 5
}


2.?其他類型轉換成 string 類型

2.1.?通fmt.Sprintf() 把其他類型轉換成 String 類型

package main
import ("fmt")
func main() {var i int = 20str1 := fmt.Sprintf("%d", i)fmt.Printf("值:%v 類型:%T\n", str1, str1)// 值:20 類型:stringvar f float64 = 12.456str2 := fmt.Sprintf("%.2f", f)fmt.Printf("值:%v 類型:%T\n", str2, str2)// 值:12.46 類型:stringvar t bool = truestr3 := fmt.Sprintf("%t", t)fmt.Printf("值:%v 類型:%T\n", str3, str3)// 值:true 類型:stringvar b byte = 'a'str4 := fmt.Sprintf("%c", b)fmt.Printf("值:%v 類型:%T\n", str4, str4)// 值:a 類型:string}

Sprintf 使用中需要注意轉換的格式 int為%d ,float為%f,?bool為%t,byte為%c

2.2.?通過strconv 把其他類型轉換成string類型

package main
import ("fmt""strconv"
)func main() {// 整型轉成字符串// FormatInt()// 參數1:int64的數值// 參數2:傳值int類型的進制var i int = 20str1 := strconv.FormatInt(int64(i), 10)fmt.Printf("值:%v 類型:%T\n", str1, str1)// 值:20 類型:string// 浮點型轉成字符串	// FormatFloat()// 參數 1:要轉換的值// 參數 2:格式化類型 'f'、'b'、'e'、'E'、'g'、'G',一般用f即可// 參數 3: 保留的小數點,如果為-1表示不對小數點格式化// 參數 4:格式化的類型傳入 64或32var f float32 = 20.231313str2 := strconv.FormatFloat(float64(f), 'f', 4, 32)fmt.Printf("值:%v 類型:%T\n", str2, str2)// 值:20.2313 類型:string// 布爾型轉成字符串,沒有任何意義str3 := strconv.FormatBool(true)fmt.Printf("值:%v 類型:%T\n", str3, str3)// 值:true 類型:string // 字符轉成字符串,沒有任何意義a:='b' str4 := strconv.FormatUint(uint64(a), 10)fmt.Printf("值:%v 類型:%T\n", str4, str4) //值:98 類型:string}

3.?String 類型轉換成數值類型

package mainimport ("fmt""strconv"
)func main() {// 字符串類型轉換成整型// ParseInt()// 參數1:string數據// 參數2:進制// 參數3:位數 16、32、64str1:= "123456"num1,_:= strconv.ParseInt(str1, 10, 64)fmt.Printf("%v--%T\n", num1, num1)// 123456--int64// 字符串類型轉換成浮點型// ParseFloat()// 參數1:string數據// 參數2:位數 32 64str2:= "123456.333xxxx"float2,_:= strconv.ParseFloat(str2, 64)fmt.Printf("%v--%T\n", float2, float2)// 0--float64// 字符串類型轉換成布爾型=>不建議這樣轉bool3, _ := strconv.ParseBool("xxxxxxx") fmt.Printf("值:%v 類型:%T\n", bool3, bool3)// 值:false 類型:bool}

4.?數值類型沒法和 bool 類型進行轉換

注意:在 go 語言中數值類型沒法直接轉換成 bool 類型,bool 類型也沒法直接轉換成數值類型

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

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

相關文章

行為型:中介者模式

目錄 1、核心思想 2、實現方式 2.1 模式結構 2.2 實現案例 3、優缺點分析 4、適用場景 5、注意事項 1、核心思想 目的:通過引入一個中介對象來封裝一組對象之間的交互,解決對象間過度耦合、頻繁交互的問題。不管是對象引用維護還是消息的轉發&am…

node_modules\node-sass: Command failed.報錯了

node_modules\node-sass: Command failed.錯誤解決 第一步:刪掉:目錄中劃紅線的配置文件 刪掉項目中的node_modules第二步:用admin權限執行,重新配置npm和yarn npm config set registry https://registry.npm.taobao.org --global npm con…

STM32 ADC工作原理與配置詳解

文章目錄 ADCADC簡介逐次逼近型ADCADC框圖ADC框圖的工作流程(以規則組為例)1. 輸入通道選擇與信號接入2. 觸發轉換:軟件或硬件觸發3. 采樣保持與量化編碼4. 轉換結果處理與存儲5. 狀態標志與中斷6. 參考電壓與時鐘驅動7. 輔助功能&#xff1a…

1、Pytorch介紹與安裝

1、Pytorch介紹 PyTorch 是由 Facebook AI Research (FAIR) 團隊開發并維護的一款開源深度學習框架,于 2016 年首次發布。它因其直觀的設計、卓越的靈活性以及強大的動態計算圖功能,迅速在學術界和工業界獲得了廣泛認可,成為當前深度學習研究…

RedisTemplate查詢不到redis中的數據問題(序列化)

RedisTemplate查詢不到redis中的數據問題(序列化) 一.問題描述 存入Redis中的值取出來卻為null,問題根本原因就是RedisTemplate和StringRedisTemplate的序列化問題、代碼示例: SpringBootTest class Redis02SpringbootApplicationTests {Autowiredprivate RedisTe…

【Net】TCP粘包與半包

文章目錄 TCP粘包與半包1 背景2 粘包(packet stick)3 半包(packet split)4 為什么會出現粘包/半包?5 如何解決?6 示例7 總結 TCP粘包與半包 在網絡編程中,粘包和半包問題是常見的 TCP 協議特有…

Leetcode 3566. Partition Array into Two Equal Product Subsets

Leetcode 3566. Partition Array into Two Equal Product Subsets 1. 解題思路2. 代碼實現 題目鏈接:3566. Partition Array into Two Equal Product Subsets 1. 解題思路 這一題我的實現還是比較暴力的,首先顯而易見的,若要滿足題目要求&…

QT中更新或添加組件時出現“”qt操作至少需要一個處于啟用狀態的有效資料檔案庫“解決方法”

在MaintenanceTool.exe中點擊下一步 第一個: 第二個: 第三個: 以上任意一個放入資料庫中

52. N-Queens II

題目描述 52. N-Queens II 回溯法 這道題與第51題是一樣的。51. N-Queens-CSDN博客 class Solution {int columns; //從低位到高位起算,第i位為0表示棋盤第i列可以放置皇后,第i位為1表示棋盤第i列不能放置皇后//邊長為n的棋盤分別有2n-1條正斜線和反…

解鎖AI智能Agent的“風格基因”

從“黑箱”到“智能Agent”:LangChain的架構哲學革新 在LangChain出現之前,開發者直接調用LLM API的方式,充滿了“黑箱”操作的挑戰: 緊耦合的業務邏輯與模型調用: 所有的業務邏輯、API調用、記憶管理、錯誤處理等都可能混雜在同一個代碼塊中。這導致代碼脆弱、難以測試,…

大數據運維過程中常見的一些操作

大數據運維是確保大數據系統穩定運行、高效處理數據的關鍵環節。以下是大數據運維過程中常見的一些操作和任務: 1. 集群部署與配置 基礎設施搭建:部署服務器、網絡設備、存儲系統,配置虛擬化環境(如 Docker、Kubernetes)。分布式系統安裝:安裝 Hadoop、Spark、Hive、Kaf…

STM32中,如何理解看門狗

在STM32微控制器中,看門狗(Watchdog)是一種硬件計時器,用于監控系統運行狀態,防止軟件死鎖或跑飛。其核心機制是:系統需定期“喂狗”(復位看門狗計數器),若未及時喂狗&am…

[AI算法] LLM中的gradient checkpoint機制

文章目錄 什么是gradient checkpoint原理使用場景 注意事項 什么是gradient checkpoint gradient checkpoint是一種優化深度學習模型內存使用的技術,尤其在訓練大型模型時非常有用。它通過犧牲計算時間為代價來減少顯存占用。大多數情況下,transformers…

船舶二階非線性響應方程的EKF與UKF參數辨識

船舶二階非線性響應方程的EKF與UKF參數辨識 本文將詳細闡述使用Python實現擴展卡爾曼濾波(EKF)和無跡卡爾曼濾波(UKF)對船舶二階非線性響應方程進行參數辨識的過程。全文包含理論推導、算法實現、仿真驗證及結果分析。—### 1. 船舶二階非線性響應方程建模船舶運動可表示為&am…

【ARM AMBA APB 入門 1.1 -- APB 讀寫寄存器 RTL 實現】

請閱讀【ARM AMBA 總線 文章專欄導讀】 文章目錄 APB 寄存器訪問APB 讀寄存器 RTL 代碼實現APB 寫寄存器 RTL 代碼實現 APB 寄存器訪問 APB 讀寄存器 RTL 代碼實現 APB 總線讀寄存器操作代碼實現: wire [31:0] SOC_PLL_CFG_REG; wire [31:0] SOC_PLL_LOCK_REG; wi…

C++修煉:位圖和布隆過濾器

Hello大家好&#xff01;很高興我們又見面啦&#xff01;給生活添點passion&#xff0c;開始今天的編程之路&#xff01; 我的博客&#xff1a;<但凡. 我的專欄&#xff1a;《編程之路》、《數據結構與算法之美》、《題海拾貝》、《C修煉之路》 1、引言 在計算機科學…

Java大廠后端技術棧故障排查實戰:Spring Boot、Redis、Kafka、JVM典型問題與解決方案

Java大廠后端技術棧故障排查實戰&#xff1a;Spring Boot、Redis、Kafka、JVM典型問題與解決方案 引言 在互聯網大廠&#xff0c;Java后端系統往往承載著高并發、高可用和復雜業務需求。系統架構日益復雜&#xff0c;涵蓋微服務、緩存、消息隊列、數據庫等多種組件&#xff0…

交叉編譯tcpdump工具

1.導出交叉編譯工具鏈 export PATH$PATH:/opt/rockchip/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin 下載源碼包libpcap-1.10.5&#xff0c;配置、并編譯安裝。 github倉庫地址 ./configure --hostarm-linux CCarm-linux-gnueabihf-gcc --prefix$PWD/install …

Pytest Fixture 是什么?

Fixture 是什么&#xff1f; Fixture 是 Pytest 測試框架的核心功能之一&#xff0c;用于為測試函數提供所需的依賴資源或環境。它的核心目標是&#xff1a; ? 提供測試數據&#xff08;如模擬對象、數據庫記錄&#xff09; ? 初始化系統狀態&#xff08;如配置、臨時文件&a…

【深度剖析】流處理系統性能優化:解決維表JOIN、數據傾斜與數據膨脹問題

目錄 前言:為什么你的流處理作業總是慢? 一、維表JOIN優化:從普通連接到高性能查詢 1.1 時態表的雙面性 1.2 Lookup Join 優化 1.3 多表JOIN優化策略 二、數據傾斜:單分區也會遇到的隱形殺手 2.1 單分區數據傾斜 2.2 熱點鍵打散技術 2.3 時間窗口預聚合 三、數據…