欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

GO語言基本數據類型-創(chuàng)新互聯

文章目錄
  • 1.整數類型
    • 1.1.有符號整數類型
    • 1.2.無符號整數類型
    • 1.3.其他整數類型
    • 1.4.額外知識
  • 2.浮點類型
  • 3.字符類型
    • 轉義字符
  • 4.布爾類型
  • 5.字符串類型
  • 6.基本數據類型的默認值
  • 7.基本數據類型之間的轉換
  • 8.基本數據類型轉為`string`
  • 9.`string`轉為基本數據類型
  • 寫在最后

成都網站建設、成都網站設計服務團隊是一支充滿著熱情的團隊,執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯的標準與要求,同時竭誠為客戶提供服務是我們的理念。創(chuàng)新互聯把每個網站當做一個產品來開發(fā),精雕細琢,追求一名工匠心中的細致,我們更用心!
1.整數類型

整數類型就是存放整數的,如18-18123534等,在GO語言中,幾乎不同于其它語言,以字節(jié)的視角來看其int類型還分為不同的int表達,首先int還要分為兩大類。

1.1.有符號整數類型

有符號就是整數有正負之分

我們來看下圖:
在這里插入圖片描述
可以看到,這4個int后面都帶了數字,這其實就是這個int類型占用內存大的比特位,比如int8,就是這個int類型大只能占用8個比特位,也就是一個字節(jié)(1個字節(jié) == 8個比特位),其他的int也是這樣來看的,這中分類也就確定了各個int的表數范圍,所以我們在定義一個整型值使,要估摸這個整型值的范圍,再來確定使用哪個int的類型。

  • 我們可以看看這些表示int的類型其大小是不是如此呢?
package main
import (
	"fmt"
	"unsafe"
)

func main(){var num1 int8
	fmt.Println(unsafe.Sizeof(num1))
	var num2 int16
	fmt.Println(unsafe.Sizeof(num2))
	var num3 int32
	fmt.Println(unsafe.Sizeof(num3))
	var num4 int64 
	fmt.Println(unsafe.Sizeof(num4))
}

在這里插入圖片描述

可以看到,不同的int類型其字節(jié)大小的確不同。

  • 如果說int類型賦值不當就會出現如下的錯誤:
package main
import "fmt"

func main(){var num1 int8 = 666 // int8 不能承受666這個值
	fmt.Println(num1)
}

在這里插入圖片描述
也就是說666不能作為值賦給int8,不然編譯就會出問題,應該使用更高存儲字節(jié)空間的int類型來存放。

1.2.無符號整數類型

無符號整數類型就是沒有負數之說只有整正數(沒有符號位)

我們來看下圖:

在這里插入圖片描述

可以看到,無符號整數類型在有符號整數類型int的前面多了一個u,這就是表示無符號的意思,值得注意的是,其占用儲存空間的字節(jié)大小沒有變化,但表數范圍變了,變得沒有負數了,大值更大了,這就是無符號整型的優(yōu)勢,如果你想表達的數據咬定沒有負數,那么選無符號整型類型會更好些(如表示身高,年齡)。

  • 當然,如果用無符號整型取存放負數,這也是會嚴格的報錯的

在這里插入圖片描述

1.3.其他整數類型

我們來看下圖:

在這里插入圖片描述
可以看到,intuint他們的字節(jié)大小是由計算機系統(tǒng)的位數來決定的,rune就相當于int32byte相當于uint8(在后面byte可以用作字符的類型)。

定義如下:

package main
import "fmt"

func main(){var a int = 3
	var b uint = 5
	var c rune = 10
	var d byte = 20
	var e byte = 'a'
}
1.4.額外知識
  • Golang的整數類型,默認聲明為int類型
    在這里插入圖片描述

  • 變量占用的字節(jié)數

首先要求變量所占用的字節(jié)數,需要引入unsafe這個包,然后使用這個包里面的Sizeof來求

package main
import (
	"fmt"
	"unsafe" // 引入包
)

func main(){// 直接使用
	var num1 int8
	fmt.Println(unsafe.Sizeof(num1)) // 1 
	var num2 int16
	fmt.Println(unsafe.Sizeof(num2)) // 2
	var num3 int32
	fmt.Println(unsafe.Sizeof(num3)) // 4
	var num4 int64 
	fmt.Println(unsafe.Sizeof(num4)) // 8
}
  • 這么多整數類型,使用的時候該如何選擇呢?Golang程序中整型變量在使用時,遵守保小不保大的原則, 即: 在保證程序正確運行下,盡量使用占用空間小的數據類型
// 表示學生年齡
var age byte = 8 // 小的數據盡量用byte存放
2.浮點類型

簡單來說,浮點類型就是用來存放小樹值的, 如3.145.20-13.14

看下圖:

在這里插入圖片描述

在GO語言中,要創(chuàng)建浮點類型的變量,必須在float后面加上32或者64,因為單純的一個float不會被當作浮點類型。

  • 當我們在賦值給一個浮點類型的變量時,我們可以直接賦值小數,也可以用E(或者e)(科學計數法)表示,如下:
package main
import (
	"fmt"
)

func main(){var fa float32 = 314E-2 // E-2表示乘以10^-2
	var fb float32 = 314E+2 // E+2表示乘以10^2
	var fc float32 = 314e-2 // 小寫e與大寫E沒有區(qū)別
	var fd float32 = 3.14 // 直接賦值3.14
	fmt.Println(fa)  // 3.14
	fmt.Println(fb)  // 31400
	fmt.Println(fc)  // 3.14
	fmt.Println(fd)  // 3.14
}
  • 我們在給float賦值的時候,很可能出現精度損失的情況,因此建議創(chuàng)建浮點類型的時候最好用float64
package main
import "fmt"

func main(){//浮點數可能會有精度的損失,所以通常情況下,建議你使用:float64 
	var num7 float32 = 520.000001314
	fmt.Println(num7)
	var num8 float64 = 520.000001314
	fmt.Println(num8)
}

運行結果:
在這里插入圖片描述

3.字符類型
  • Golang中沒有專門的字符類型,如果要存儲單個字符(字母),一般使用byte來保存。
  • Golang中字符使用UTF-8編碼
    UTF-8編碼鏈接

UTF-8編碼:
在這里插入圖片描述

  • 當我們用byte類型來定義一個字符變量,將其打印出來的值是其對應的ASCLL碼值,各個字符的ASCLL碼值對應如下:

在這里插入圖片描述
示例如下:
在這里插入圖片描述
所以字符類型,本質上就是一個整數,也可以直接參與運算,輸出字符的時候,會將對應的碼值做一個輸出,但如果我們用Printf打印(括號里要用%c),可以打印出字符:
在這里插入圖片描述

如果我們想要打印中文字符,比如打印一個中,這時byte類型就存放不下其對應的ASCLL碼值了,所以這時我們應該使用int

package main
import "fmt"

func main(){var c int = '中'
	fmt.Println(c)
	//漢字字符,底層對應的是Unicode碼值
	//對應的碼值為20013,byte類型溢出,能存儲的范圍:可以用int
	//總結:Golang的字符對應的使用的是UTF-8編碼
	//(Unicode是對應的字符集,UTF-8是Unicode的其中的一種編碼方案)
}

在這里插入圖片描述

轉義字符

看下圖:

在這里插入圖片描述

通俗來說:

  • \b
    就是往前挪一格,掩蓋挪動的那一格的數據。
    在這里插入圖片描述


  • 就是換行,這個不用多說(haha)

  • \r
    就是光標回到本行的開頭,將\r后面的字符依次覆蓋前面的字符。
    在這里插入圖片描述

  • \t
    就是將\t前面的字符串補夠8個位置(不夠8個位置),不夠的話,則從那夠了的8個再往后數。

在這里插入圖片描述

  • \",\',\\
    這三個是為了在字符串中能夠將,',\打印出來而不是與旁邊的"",'',或者是轉義匹配。

例如:

在這里插入圖片描述

4.布爾類型
  • 布爾類型也叫bool類型,bool類型數據只允許取值true和false。
  • 布爾類型占1個字節(jié)。
  • 布爾類型適于邏輯運算,一般用于程序流程控制。

基本的使用:

package main
import "fmt"
func main(){//測試布爾類型的數值:
        var flag1 bool = true
        fmt.Println(flag1) // true
        var flag2 bool = false
        fmt.Println(flag2) // false
        var flag3 bool = 5< 9
        fmt.Println(flag3) // true,因為5的確小于9:為真
}
5.字符串類型
  • 字符串類型用string來定義。
  • 字符串定義后就不能改變了(單指字符串,變量的值可以變)。
  • 字符串可以拼接。
  • 當一個字符串里面有轉義的時候最好用 `` (Esc下面的按鍵)括起來(當然轉義字符也可以)。
  • 當一個字符串過長時,最好換行,而換行的時候最好將運算符放在一行的最后面,因為如果不是符號在最后面,編譯器會自動在這一行的后面加上,我們看不見而已。

示例:

package main
import "fmt"

func main(){// 定義一個字符串
	var str1 string = "hello golang"
	fmt.Println(str1) // hello golang


	// 轉義字符過多時用``括起來
	var str2 string = `package main
	import "fmt"
	func main(){
		fmt.Println("abc\"d\"efghijklm\\nopqrs\\tuvw")
		// abc"d"efghijklm\nopqrs\tuvw
	}`


	// 字符串拼接
	var str3 string = "hahaha" + "hehehe"
	str3 += "iloveyou"
	fmt.Println(str3) // hahahaheheheiloveyou


	//當一個字符串過長的時候:注意:+保留在上一行的最后
	var str4 string = "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" +
	     "def"+ "abc" + "def" + "abc" + "def"+ "abc" + "def" + "abc" + "def"+
		"abc" + "def" + "abc" + "def"+ "abc" + "def" + "abc" + "def"+ "abc" +
		"def" + "abc" + "def"+ "abc" + "def" + "abc" + "def"+ "abc" + "def" + 
		"abc" + "def"+ "abc" + "def"
	fmt.Println(str4)
}
6.基本數據類型的默認值

在Golang中數據類型都有一個默認值,當程序員沒有賦值時,就會保留默認值(默認值又叫零值)。

在這里插入圖片描述

7.基本數據類型之間的轉換

Go在不同類型的變量之間賦值時需要顯式轉換,并且只有顯式轉換(強制轉換)。

語法形式:
表達式T(v)將值v轉換為類型T
T : 就是數據類型
v : 就是需要轉換的變量

例如:

package main
import "fmt"

func main(){var num1 int = 1000
	var f1 float32 = float32(num1)
	fmt.Println(f1) // 1000

	var f2 float32 = 666.66
	var num2 int = int(f2)
	fmt.Println(num2) // 66
}

但如過一個大的值強制轉換為一個不能存放這個大數據的值的類型時,編譯器不會報錯,但運行后會造成數據的溢出(截斷):
例如:

package main
import "fmt"

func main(){// 將int64轉為int8的時候,編譯不會出錯的,但是會數據的溢出
	var n1 int64 = 666666
	var n2 int8 = int8(n3)
	// 這里發(fā)生了截斷
	fmt.Println(n2)//56
}
8.基本數據類型轉為string
  • 在程序開發(fā)中,我們經常需要將基本數據類型轉成string類型。或者將string類型轉成基本數據類型。
  • 將基本數據類型轉化為string有兩種方式:
    1.fmt包中的Sprintf“%參數”要轉換的變量注意:原先的變量值不變,只是將面值賦給一個string類型的變量))—推薦
    2.使用strconv包中的函數。
  • 第一種方式轉換如下:
package main
import "fmt"
func main(){var n1 int = 19
	var n2 float32 = 4.78
	var n3 bool = false
	var n4 byte = 'a'

	var s1 string = fmt.Sprintf("%d",n1)
	fmt.Printf("s1對應的類型是:%T ,s1 = %q \n",s1, s1)

	var s2 string = fmt.Sprintf("%f",n2)
	fmt.Printf("s2對應的類型是:%T ,s2 = %q \n",s2, s2)

	var s3 string = fmt.Sprintf("%t",n3)
	fmt.Printf("s3對應的類型是:%T ,s3 = %q \n",s3, s3)
	
	var s4 string = fmt.Sprintf("%c",n4)
	fmt.Printf("s4對應的類型是:%T ,s4 = %q \n",s4, s4)
}

在這里插入圖片描述

  • 第二種方式轉換我們還需了解strconv包,以及包中我們將要用到的函數。

在這里插入圖片描述

根據函數的功能及使用,如下轉換:

package main
import(
        "fmt"
        "strconv"
)
func main(){var n1 int = 18
        var s1 string = strconv.FormatInt(int64(n1),10)  //參數:第一個參數必須轉為int64類型 ,第二個參數指定字面值的進制形式為十進制
        fmt.Printf("s1對應的類型是:%T ,s1 = %q \n",s1, s1)
        
        var n2 float64 = 4.29
        var s2 string = strconv.FormatFloat(n2,'f',9,64)
        //第二個參數:'f'(-ddd.dddd)  第三個參數:9 保留小數點后面9位  第四個參數:表示這個小數是float64類型
        fmt.Printf("s2對應的類型是:%T ,s2 = %q \n",s2, s2)
        
        var n3 bool = true
        var s3 string = strconv.FormatBool(n3)
        fmt.Printf("s3對應的類型是:%T ,s3 = %q \n",s3, s3)
}
9.string轉為基本數據類型

string轉為基本數據類型的方式是使用strconv包中的函數。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

下面通過使用函數來代碼實現轉化:

package main
import(
        "fmt"
        "strconv"
)

func main(){//1. string 轉 bool
        //string-->bool
        var s1 string = "true"
        var b bool
        //ParseBool這個函數的返回值有兩個:(value bool, err error)
        //value就是我們得到的布爾類型的數據,err出現的錯誤
        //我們只關注得到的布爾類型的數據,err可以用_直接忽略
        b , _ = strconv.ParseBool(s1)
        fmt.Printf("b的類型是:%T,b=%v \n",b,b)
//2.  string 轉 int64        
        //string---》int64
        var s2 string = "19"
        var num1 int64
        num1,_ = strconv.ParseInt(s2,10,64)
        fmt.Printf("num1的類型是:%T,num1=%v \n",num1,num1)
//3.  string 轉 float64        
        //string-->float32/float64
        var s3 string = "3.14"
        var f1 float64
        f1,_ = strconv.ParseFloat(s3,64)
        fmt.Printf("f1的類型是:%T,f1=%v \n",f1,f1)
//4.        
        //注意:string向基本數據類型轉換的時候,
        //一定要確保string類型能夠
        //轉成有效的數據類型,
        //否則最后得到的結果就是按照對應類型的默認值輸出
        var s4 string = "golang"
        var b1 bool
        b1 , _ = strconv.ParseBool(s4)
        fmt.Printf("b1的類型是:%T,b1=%v \n",b1,b1)
//5.        
        var s5 string = "golang"
        var num2 int64
        num2,_ = strconv.ParseInt(s5,10,64)
        fmt.Printf("num2的類型是:%T,num2=%v \n",num2,num2)
}

運行結果為:

在這里插入圖片描述

可以看到,b1與 num2的值都是默認值。

寫在最后

GO語言需要求精的地方多,不能放過每一個部分,不然出來的代碼就很可能會不夠嚴謹。

感謝閱讀本小白的博客,錯誤的地方請嚴厲指出噢!

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

網站名稱:GO語言基本數據類型-創(chuàng)新互聯
標題來源:http://www.chinadenli.net/article16/djcigg.html

成都網站建設公司_創(chuàng)新互聯,為您提供企業(yè)網站制作定制開發(fā)網站導航品牌網站建設響應式網站微信小程序

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都seo排名網站優(yōu)化