最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Go語(yǔ)言中的數(shù)據(jù)類(lèi)型及類(lèi)型轉(zhuǎn)換

 更新時(shí)間:2022年04月12日 13:52:10   作者:劍客阿良_ALiang  
這篇文章主要為大家介紹了Go語(yǔ)言中常見(jiàn)的幾種數(shù)據(jù)類(lèi)型,以及他們之間的轉(zhuǎn)換方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

1、基本數(shù)據(jù)類(lèi)型

數(shù)據(jù)類(lèi)型有很多,先研究一下基礎(chǔ)的,例如:布爾型、數(shù)字類(lèi)型、字符串類(lèi)型。

數(shù)字類(lèi)型有uint8、uint16、uint32、uint64、int8、int16、int32、int64(uint和int區(qū)別在于uint為無(wú)符號(hào)整數(shù),即只支持正數(shù),不支持負(fù)數(shù)形式)

數(shù)字浮點(diǎn)型有fload32、float64、complex64、complex126(后面兩個(gè)均為實(shí)數(shù)和虛數(shù)類(lèi)型,暫時(shí)先不研究)

樣例代碼如下:

//數(shù)據(jù)類(lèi)型
func test_data() {
	var a bool
	var b int16
	var c uint64 = 1231254353452
	var d float32 = 1.78
	fmt.Println(a)
	fmt.Println(b)
	fmt.Println(c)
	fmt.Println(d)
	fmt.Println("int8范圍:", math.MinInt8, math.MaxInt8)
	fmt.Println("uint8范圍:", math.MaxUint8)
}

執(zhí)行結(jié)果

false
0                                               
1231254353452                                   
1.78                                            
int8范圍: -128 127                              
uint8范圍: 255   

注意

1、如果沒(méi)有賦值的基礎(chǔ)數(shù)據(jù)類(lèi)型變量具有初始值,不像java默認(rèn)為null。bool類(lèi)型的初始值為false,int的初始值為0。

2、uint和int的取值范圍不一樣,uint只是正數(shù)。

2、基礎(chǔ)數(shù)據(jù)類(lèi)型轉(zhuǎn)換

在工程中常常遇到數(shù)據(jù)類(lèi)型轉(zhuǎn)換問(wèn)題,測(cè)試一下。

樣例代碼如下

//數(shù)據(jù)類(lèi)型轉(zhuǎn)換
func test_convert() {
	var num int = 10
	var num1 float32 = float32(num)
	var num2 float64 = float64(num)
	fmt.Printf("num類(lèi)型為%T,num1類(lèi)型為%T,num2類(lèi)型為%T\n", num, num1, num2)
}

執(zhí)行結(jié)果

num類(lèi)型為int,num1類(lèi)型為float32,num2類(lèi)型為float64

注意一下Printf中格式化的動(dòng)詞使用,特意找了下,整理一下。

動(dòng)詞功能
%v按照值的本來(lái)值輸出
%+v在%v基礎(chǔ)上,對(duì)結(jié)構(gòu)體字段名和值進(jìn)行展開(kāi)
%#v輸出Go語(yǔ)言語(yǔ)法格式的值
%T輸出Go語(yǔ)言數(shù)據(jù)類(lèi)型
%%輸出%本體
%b輸出以二進(jìn)制方式顯示的整型
%o輸出以八進(jìn)制方式顯示的整型
%d輸出以十進(jìn)制方式顯示的整型
%x輸出以十六進(jìn)制方式顯示的整型,小寫(xiě)
%X輸出以十六進(jìn)制方式顯示的整型,大寫(xiě)
%U以Unicode字符方式輸出
%f以浮點(diǎn)型方式輸出
%p指針,十六進(jìn)制方式顯

3、基本數(shù)據(jù)類(lèi)型轉(zhuǎn)為字符串

這也是工程中經(jīng)常使用的場(chǎng)景。

樣例代碼如下,先使用fmt的Sprintf方法轉(zhuǎn)換。

//基礎(chǔ)數(shù)據(jù)類(lèi)型轉(zhuǎn)為string
func test_convert_string() {
	var a int = 10
	var b float64 = 1.8
	var c bool = true
	var d byte = 'd'
	var e uint64 = 8
	var str string
	fmt.Println(str + "a")
	str = fmt.Sprintf("%d", a)
	fmt.Printf("str類(lèi)型為%T,str=%v\n", str, str)
	str = fmt.Sprintf("%f", b)
	fmt.Printf("str類(lèi)型為%T,str=%v\n", str, str)
	str = fmt.Sprintf("%t", c)
	fmt.Printf("str類(lèi)型為%T,str=%v\n", str, str)
	str = fmt.Sprintf("%c", d)
	fmt.Printf("str類(lèi)型為%T,str=%v\n", str, str)
	str = fmt.Sprintf("%b", e)
	fmt.Printf("str類(lèi)型為%T,str=%v\n", str, str)
}

執(zhí)行結(jié)果

a                                               
str類(lèi)型為string,str=10                          
str類(lèi)型為string,str=1.800000                    
str類(lèi)型為string,str=true                        
str類(lèi)型為string,str=d                           
str類(lèi)型為string,str=1000 

注意

1、可以看到如果沒(méi)有對(duì)字符串類(lèi)型做初始復(fù)制,會(huì)默認(rèn)為空字符串。

4、strconv的使用

使用strconv可以對(duì)各種數(shù)據(jù)類(lèi)型進(jìn)行字符串轉(zhuǎn)換。

樣例如下

//strconv的使用
func test_strconv() {
	var i int = 10
	var x int = 999
	var f float64 = 1.8
	var t bool = false
	var z int = 97
	var str string
	// 十進(jìn)制int
	str = strconv.FormatInt(int64(i), 10)
	fmt.Printf("str類(lèi)型為%T,str=%v\n", str, str)
	//十六進(jìn)制int
	str = strconv.FormatInt(int64(x), 16)
	fmt.Printf("str類(lèi)型為%T,str=%v\n", str, str)
	//浮點(diǎn)型,f表示格式,3表示位數(shù),64表示轉(zhuǎn)換成float64
	str = strconv.FormatFloat(float64(f), 'f', 3, 64)
	fmt.Printf("str類(lèi)型為%T,str=%v\n", str, str)
	//布爾類(lèi)型
	str = strconv.FormatBool(t)
	fmt.Printf("str類(lèi)型為%T,str=%v\n", str, str)
	//string函數(shù)和strconv.itoa區(qū)別
	var str1 = strconv.Itoa(z)
	var str2 = string(z)
	fmt.Printf("str1類(lèi)型為%T,str1=%v\n", str1, str1)
	fmt.Printf("str2類(lèi)型為%T,str2=%v\n", str2, str2)
}

執(zhí)行結(jié)果

str類(lèi)型為string,str=10                          
str類(lèi)型為string,str=3e7                         
str類(lèi)型為string,str=1.800                       
str類(lèi)型為string,str=false                       
str1類(lèi)型為string,str1=97                        
str2類(lèi)型為string,str2=a

注意

1、FormatInt參數(shù)可以選擇10進(jìn)制或者16進(jìn)制。

2、FormatFloat參數(shù)可以選擇保留幾位小數(shù)。

3、Itoa方法可以將int轉(zhuǎn)為string,但是string方法會(huì)把數(shù)字轉(zhuǎn)換為ASCII碼值等于該整型數(shù)字的字符。

5、字符串轉(zhuǎn)為基礎(chǔ)類(lèi)型

使用strconv可以將字符串轉(zhuǎn)化為基礎(chǔ)類(lèi)型。

樣例代碼如下

//字符串轉(zhuǎn)為基礎(chǔ)類(lèi)型
func test_string_convert() {
	var str string = "true"
	b, _ := strconv.ParseBool(str)
	fmt.Printf("b類(lèi)型為%T,b=%v\n", b, b)
 
	str = "111"
	// 默認(rèn)返回int64
	i, _ := strconv.ParseInt(str, 10, 64)
	fmt.Printf("i類(lèi)型為%T,i=%v\n", i, i)
 
	str = "1.908"
	f, _ := strconv.ParseFloat(str, 64)
	fmt.Printf("f類(lèi)型為%T,f=%v\n", f, f)
 
	str = "abc"
	c, c1 := strconv.ParseInt(str, 10, 64)
	fmt.Printf("c類(lèi)型為%T,c=%v\n", c, c)
	fmt.Printf("c1類(lèi)型為%T,c1=%v\n", c1, c1)
}

執(zhí)行結(jié)果

b類(lèi)型為bool,b=true                              
i類(lèi)型為int64,i=111                              
f類(lèi)型為float64,f=1.908
c類(lèi)型為int64,c=0
c1類(lèi)型為*strconv.NumError,c1=strconv.ParseInt: parsing "abc": invalid syntax   

注意

1、":="等于聲明變量加賦值。

2、ParseInt返回的int類(lèi)型為int64,ParseFloat返回的float類(lèi)型為float64。

3、返回的值有兩個(gè),如果解析失敗,則范圍該數(shù)據(jù)類(lèi)型的初始化值,比如:int類(lèi)型返回0。第二個(gè)值為異常,如果沒(méi)有異常則為空。

到此這篇關(guān)于詳解Go語(yǔ)言中的數(shù)據(jù)類(lèi)型及類(lèi)型轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Go數(shù)據(jù)類(lèi)型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入淺出Golang中select的實(shí)現(xiàn)原理

    深入淺出Golang中select的實(shí)現(xiàn)原理

    在go語(yǔ)言中,select語(yǔ)句就是用來(lái)監(jiān)聽(tīng)和channel有關(guān)的IO操作,當(dāng)IO操作發(fā)生時(shí),觸發(fā)相應(yīng)的case操作,有了select語(yǔ)句,可以實(shí)現(xiàn)main主線程與goroutine線程之間的互動(dòng)。本文就來(lái)詳細(xì)講講select的實(shí)現(xiàn)原理,需要的可以參考一下
    2022-08-08
  • gorm FirstOrCreate和受影響的行數(shù)實(shí)例

    gorm FirstOrCreate和受影響的行數(shù)實(shí)例

    這篇文章主要介紹了gorm FirstOrCreate和受影響的行數(shù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Go語(yǔ)言實(shí)現(xiàn)生產(chǎn)者-消費(fèi)者模式的方法總結(jié)

    Go語(yǔ)言實(shí)現(xiàn)生產(chǎn)者-消費(fèi)者模式的方法總結(jié)

    這篇文章主要介紹了在?Go?語(yǔ)言中實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模式的多種方法,并重點(diǎn)探討了通道、條件變量的適用場(chǎng)景和優(yōu)缺點(diǎn),需要的可參考一下
    2023-05-05
  • golang抓取網(wǎng)頁(yè)并分析頁(yè)面包含的鏈接方法

    golang抓取網(wǎng)頁(yè)并分析頁(yè)面包含的鏈接方法

    今天小編就為大家分享一篇golang抓取網(wǎng)頁(yè)并分析頁(yè)面包含的鏈接方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • go語(yǔ)言template用法實(shí)例

    go語(yǔ)言template用法實(shí)例

    這篇文章主要介紹了go語(yǔ)言template用法,實(shí)例分析了template的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Go計(jì)算某段代碼運(yùn)行所耗時(shí)間簡(jiǎn)單實(shí)例

    Go計(jì)算某段代碼運(yùn)行所耗時(shí)間簡(jiǎn)單實(shí)例

    這篇文章主要給大家介紹了關(guān)于Go計(jì)算某段代碼運(yùn)行所耗時(shí)間的相關(guān)資料,主要介紹了Golang記錄計(jì)算函數(shù)執(zhí)行耗時(shí)、運(yùn)行時(shí)間的一個(gè)簡(jiǎn)單方法,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-11-11
  • golang中interface接口的深度解析

    golang中interface接口的深度解析

    什么是interface,簡(jiǎn)單的說(shuō),interface是一組method的組合,下面這篇文章主要給大家深度解析了關(guān)于golang中的interface接口,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Json?web?token(JWT)golang實(shí)現(xiàn)方式

    Json?web?token(JWT)golang實(shí)現(xiàn)方式

    JWT由三部分組成:頭部、載荷和簽證,頭部包含類(lèi)型和加密算法;載荷包含聲明;簽證通過(guò)頭部和載荷與密鑰生成,JWT用于身份驗(yàn)證和信息交換,在Golang中,可以使用包https://github.com/tutengdihuang/jwt來(lái)實(shí)現(xiàn)JWT的生成、驗(yàn)證和解碼
    2025-11-11
  • Go中數(shù)組傳參的幾種方式小結(jié)

    Go中數(shù)組傳參的幾種方式小結(jié)

    本文主要介紹了Go中數(shù)組傳參的幾種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Go爬蟲(chóng)(http、goquery和colly)詳解

    Go爬蟲(chóng)(http、goquery和colly)詳解

    goquery可以避免操作復(fù)雜的正則表達(dá)式,它可以直接根據(jù)url獲取一個(gè)Document對(duì)象,然后根據(jù)標(biāo)簽選擇器、類(lèi)選擇器和id選擇器獲取相應(yīng)的選擇對(duì)象,進(jìn)行自定義的操作,這篇文章主要介紹了Go爬蟲(chóng)(http、goquery和colly),需要的朋友可以參考下
    2022-09-09

最新評(píng)論

清丰县| 绥阳县| 常宁市| 鹤岗市| 永仁县| 长岭县| 安乡县| 庆阳市| 翼城县| 长汀县| 宁武县| 舟山市| 社旗县| 翁牛特旗| 广元市| 千阳县| 客服| 法库县| 定陶县| 伊川县| 阳山县| 阳信县| 南澳县| 孝感市| 红安县| 乌海市| 麦盖提县| 营口市| 阿拉善左旗| 烟台市| 武鸣县| 车致| 吉木乃县| 晋江市| 武乡县| 竹北市| 渝北区| 松阳县| 长治县| 彰武县| 兴化市|