日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Go 变量及基本数据类型3

發(fā)布時(shí)間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go 变量及基本数据类型3 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#### Go 變量及基本數(shù)據(jù)類型(三)
今天學(xué)習(xí)一下剩下的兩個(gè)基本數(shù)據(jù)類型(布爾類型,字符串類型)以及基本數(shù)據(jù)類型的相互轉(zhuǎn)換
##### 布爾類型
布爾類型也稱為bool 類型, bool 類型只允許取值true 和 false;
布爾類型占1個(gè)字節(jié);
bool 類型適用于***邏輯運(yùn)算***, 一般用于流程控制:
if 條件控制語(yǔ)句;
for 循環(huán)控制語(yǔ)句; package main import ("fmt""unsafe") func main(){var a bool fmt.Println(unsafe.Siaeof(a)) //1 占用內(nèi)存大小fmt.Println(a) // false 默認(rèn)值為 false }

  


##### 字符串類型
字符串就是一串固定長(zhǎng)度的字符連接在一起的字符序列,Go 中的字符串是由單個(gè)字節(jié)連接起來(lái)的. Go 語(yǔ)言的字符串的字節(jié)使用UTF-8 編碼標(biāo)識(shí)的unicode 文本;
***string*** 占用內(nèi)存大小為16字節(jié);
案例: package main import "fmt""unsafe") func main(){var str string fmt.Println(unsafe.Siaeof(str)) // 16fmt.Println(str) // 為空字符串 }

  


字符串使用注意事項(xiàng)與細(xì)節(jié)
1. Go 語(yǔ)言的字符串使用UTF-8編碼標(biāo)識(shí)的unicode 文本,不會(huì)出現(xiàn)亂碼的問(wèn)題;
2. 字符串一旦賦值后,字符串就不能再更改,Go 中字符串是不可變的;
3. 字符串的兩種表示形式:
3.1 雙引號(hào),可以識(shí)別轉(zhuǎn)義字符;
3.2 反引號(hào),以字符串原生形式輸出,不會(huì)轉(zhuǎn)義字符, 包括不會(huì)轉(zhuǎn)義換行符和特殊字符;
4. 字符串拼接使用+ 號(hào);
5. 一行中字符串太長(zhǎng),需要使用多行字符串; package main import "fmt" func main(){var str = "yes"str[0] = 'h' // 錯(cuò)誤, 字符串可以索引,但是不可更改var str1 = `#!/usr/bin/env python #coding: utf-8def login():print("yes\n")print("hello,world")if __name__ == "__main__":login()`fmt.Println(str1)// 字符串的拼接str = "hello" + " world" fmt.Println(str)// 多行處理,分行需要將 + 保留在上一行; str = "hello " + "world" + "hello " + "world" + "hello " + "world" + "hello " + "world" + "hello " + "world" + "hello " + "world" + fmt.Println(str) }

  


##### 基本數(shù)據(jù)類型的默認(rèn)值
前幾篇文章中已經(jīng)提到過(guò),在這里再總結(jié)一下, 加深印象;
在Go 中數(shù)據(jù)類型都有一個(gè)默認(rèn)值,當(dāng)程序未給變量賦值時(shí),將使用默認(rèn)值, 默認(rèn)值也稱為零值;
基本數(shù)據(jù)類型的默認(rèn)值如下:
1. 整型 = 0 ;
2. 浮點(diǎn)型 = 0 ;
3. 字符串 = "" ;
4. bool = false ; package main import "fmt" func main(){var a int //0var b float32 //0var c string //""var d bool //falsefmt.Println(a,b,c,d) }

  


##### 基本數(shù)據(jù)類型的轉(zhuǎn)換
Go 與Java/C 不同, 不同的數(shù)據(jù)類型變量之間賦值需要***顯示轉(zhuǎn)換***, 不能自動(dòng)轉(zhuǎn)換;
1. 語(yǔ)法: T(v) 將值轉(zhuǎn)換為類型T,T 是數(shù)據(jù)類型比如: int32,int,float32 等;
2. v: 需要轉(zhuǎn)換的變量; package main import "fmt" func main(){var i int32 = 10// 將i 轉(zhuǎn)換為float var i1 float32 = float32(i)var i2 int8 = int8(i)var i3 int64 = int64(i) fmt.Println(i,i1,i2,i3) }

  


基本數(shù)據(jù)相互轉(zhuǎn)換注意事項(xiàng)
1. Go 數(shù)據(jù)類型轉(zhuǎn)換可以是從 表示范圍小--> 表示范圍大;也可以表示范圍大--> 表示范圍小;
2. 被轉(zhuǎn)換的變量的值,本身數(shù)據(jù)類型沒(méi)有變化;
3. 在轉(zhuǎn)換過(guò)程中,表示范圍大--> 表示范圍小時(shí),編譯不會(huì)報(bào)錯(cuò), 如果超過(guò)范圍小的值范圍(參考上一篇文章),按溢出處理,結(jié)果可能不正確,所以在轉(zhuǎn)換時(shí)需要考慮范圍; package main import "fmt" func main(){var i int32 = 10 var i1 float32 = float32(i)// 格式化輸出,%v 表示值, 可以輸出string,int 等基本類型; fmt.Printf("i=%v,i1=%v\n",i,i1)// 被轉(zhuǎn)換的變量本身類型沒(méi)有變化 fmt.Printf("i type is %T\n",i) }

  


##### 基本數(shù)據(jù)類型與string 的轉(zhuǎn)換
在開(kāi)發(fā)中我們經(jīng)常需要將基本數(shù)據(jù)類型轉(zhuǎn)換成string, 或者將string 轉(zhuǎn)換成基本數(shù)據(jù)類型
基本數(shù)據(jù)類型轉(zhuǎn)string 類型
1. fmt.Sprintf("%v",vars)(推薦使用這個(gè),比較靈活)
2. 使用strconv 包中的函數(shù) //Sprintf formats according to a format specifier and returns the resulting string. // Sprintf 根據(jù)格式化參數(shù)生成格式化后的字符串并返回該字符串 func Sprintf(format string,a ...interface{}) string

  


案例: package main import ("fmt""strconv" ) func main() {var a int = 1var b float64 = 1.1var c bool = truevar d byte = 'a'var str string// 格式化int 類型str = fmt.Sprintf("%d",a)fmt.Printf("str type is %T, str value is %q\n",str,str)// 格式化float64str = fmt.Sprintf("%f",b)fmt.Printf("str type is %T, str value is %q\n",str,str)// 格式化boolstr = fmt.Sprintf("%t",c)fmt.Printf("str type is %T, str value is %q\n",str,str)// 格式化bytestr = fmt.Sprintf("%c",d)fmt.Printf("str type is %T, str value is %q\n",str,str)//第二種方式使用 strconv 包中的函數(shù)// 第一個(gè)參數(shù)為int64類型, 第二個(gè)參數(shù)為目標(biāo)進(jìn)制str = strconv.FormatInt(int64(a),10)fmt.Printf("str type is %T, str value is %q\n",str,str)// 第一個(gè)參數(shù)為float64類型,第二個(gè)參數(shù)為格式, 第三個(gè)參數(shù)為小數(shù)據(jù)保留10位,64表示第一個(gè)參數(shù)為原類型float64var f float64 = 111.12345678//str = strconv.FormatFloat(f,'f',10,32) // 111.1234588623str = strconv.FormatFloat(f,'f',10,64) // 111.1234567800fmt.Printf("str type is %T, str value is %q\n",str,str)str = strconv.FormatBool(c)fmt.Printf("str type is %T, str value is %q\n",str,str) }

  


##### string 類型轉(zhuǎn)基本數(shù)據(jù)類型
使用strconv 包中的函數(shù) func ParseBool(str string)(value bool,err error) func ParseFloat(s string,bitSize int)(f float64,err error) func ParseFloat(s string,base int, bitSize int) (i int64,err error) func ParseUint(s string,b int,bitSize int)(n uint,err error)

  


案例: package mainimport ("fmt""strconv" )func main(){var str = "true"var b bool// ParseBool 返回兩個(gè)值,value ,err// 在Go 中如果不需要函數(shù)返回的值可以使用_忽略, _ 不占用內(nèi)存,作用類似于垃圾筒// 一般情況下錯(cuò)誤不建議忽略,這里是因?yàn)橹啦粫?huì)出錯(cuò)***b,_ = strconv.ParseBool(str)fmt.Printf("b type is %T, b value is %v\n",b,b)str = "123"// 第一個(gè)參數(shù)為需要轉(zhuǎn)換的字符串, 第二個(gè)參數(shù)為字符串代表的數(shù)字的進(jìn)制,第三個(gè)參數(shù)為原字符串代表數(shù)字的類型,這里是int64n,_ := strconv.ParseInt(str,10,64)fmt.Printf("n type is %T, n value is %v\n",n,n)str = "12.123456789"// 第一個(gè)參數(shù)為需要轉(zhuǎn)換的字符串, 第二個(gè)參數(shù)為字符串代表的浮點(diǎn)數(shù)的類型,這里是float64// 如果將64 改成32 會(huì)造成浮點(diǎn)數(shù)精度丟失,參考 strconv.FormatFloat()f,_ := strconv.ParseFloat(str,64)fmt.Printf("f type is %T,f value is %v\n",f,f) }

  


string 轉(zhuǎn)基本數(shù)據(jù)類型的注意事項(xiàng)
在將string 類型轉(zhuǎn)換成基本數(shù)據(jù)類型時(shí),要確保string 類型能夠轉(zhuǎn)成有效的數(shù)據(jù),比如: 可以將"11" 轉(zhuǎn)換成一個(gè)整數(shù),但是不能將"aaa" 轉(zhuǎn)換成一個(gè)整數(shù),如果這樣處理,將會(huì)返回錯(cuò)誤,同時(shí)返回目標(biāo)類型的零值(int=0,float = 0,bool=false)

-------最近在同步更新微信公眾號(hào):"開(kāi)胃咸菜", 最新文章以公眾號(hào)為準(zhǔn),感謝關(guān)注

轉(zhuǎn)載于:https://www.cnblogs.com/Mail-maomao/p/11357413.html

總結(jié)

以上是生活随笔為你收集整理的Go 变量及基本数据类型3的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。