Golang學習筆記-1.4 資料類型

來源:互聯網
上載者:User

本文系第四篇Golang語言學習教程
在Go語言中,資料類型用於聲明函數和變數。
Go語言按類別有以下幾種資料分類

序號 類型 描述
1 bool bool類型表示一個布爾值,值為truefalse
2 數字類型 整型int和浮點型float32、float64.Go支援整型和浮點型數字,並且原生支援複數。
3 字串類型 一串固定長度字元串連起來的序列,Go語言中字串由單個位元組串連起來,使用UTF-8編碼標識Unicode文本。
4 衍生類別型 包括:
(a) 指標類型(Pointer)
(b) 數群組類型
(c) 結構化類型(struct)
(d) Channel 類型
(e) 函數類型
(f) 切片類型
(g) 介面類型(interface)
(h) Map 類型

bool

bool類型表示一個布爾值,值為truefalse
例:

package main import . "fmt"func main(){        a := true //定義 a為true        b := false //定義 b為false        Println("a is",a, "b is",b)        c := a && b //c = a 和 b做與運算        Println("c is",c)        d := a || b //d = a 和 b做或運算         Println("d is",d)}

以上程式運行結果如下:

a is true b is false
c is false
d is true

數字類型

序號 類型和描述
1 uint8
無符號8位整型(0 - 255)
2 uint16
無符號16位整型(0 - 65535)
3 uint32
無符號32位整型(0 - 4294967295)
4 uint64
無符號64位整型(0 - 18446744073709551615)
5 int8
有符號8位整型(-128 - 127)
6 int16
有符號16位整型(-32768 - 32767)
7 int32
有符號整型32位(-2147483648 - 2147483647)
8 int64
有符號整型64位(-9223372036854775808 - 9223372036854775807)

int:根據不同的底層平台(Underlying Platform),表示 32 或 64 位元整型。除非對整型的大小有特定的需求,否則你通常應該使用 int 表示整型。
大小:在 32 位系統下是 32 位,而在 64 位元系統下是 64 位元。

例:

package mainimport (        "fmt"        "unsafe")func main(){        a,b := 95,80 //給 a 和 b 賦值        fmt.Println("values of a is",a, "values of b is",b)        fmt.Printf("the type of a is %T,the size of a is %d\n",a, unsafe.Sizeof(a))  //輸出 a 的類型和類型大小        fmt.Printf("the type of b is %T,the size of b is %d\n",b, unsafe.Sizeof(b)) //輸出 b 的類型和類型大小,\n換行}

在 Printf 方法中,使用 %T 格式說明符(Format Specifier),可以列印出變數的類型。Go 的 unsafe 包提供了一個 Sizeof 函數,該函數接收變數並返回它的位元組大小。unsafe 包應該小心使用,因為使用 unsafe 包可能會帶來可移植性問題。不過出於本教程的目的,我們是可以使用的。

上面程式會輸出變數 a 和 b 的類型和大小。格式說明符 %T 用於列印類型,而 %d 用於列印位元組大小。

以上程式運行結果如下:

values of a is 95 values of b is 80

the type of a is int,the size of a is 8
the type of b is int,the size of b is 8

從上面的輸出,我們可以推斷出 a 和 b 為 int 類型,且大小都是 64 位元(8 位元組)。

浮點型

package mainimport "fmt"func main(){        a,b := 11.5,55.98 //自動推斷 a, b 的類型        fmt.Printf("Type of is a is %T, type of b is %T\n",a,b) //輸出 a, b 的類型        sum := a+b //將a+b賦值給sum        diff := a-b //將a-b賦值給diff        fmt.Println("sum",sum, "diff",diff) //輸出sum、diff}

以上程式簡單示範了浮點型的運用。
運行結果如下:

Type of is a is float64, type of b is float64
sum 67.47999999999999 diff -44.48

複數類型

Go語言提供了兩種精度的複數類型:complex64和complex128,分別對應float32和float64兩種浮點數精度。
內建的complex函數用於構建複數,內建的real和imag函數分別返回複數的實數和虛數。
例:

package mainimport ( "fmt" )func get_real_imag() {        value4 := 1.2 + 10i        var r = real(value4) //返回複數的實部: 1.2        var i = imag(value4) //返回複數的虛部: 10        fmt.Println("the real is",r, "and the imag is",i)}func main() {        get_real_imag()}

以上運行結果如下:

the real is 1.2 and the imag is 10

類型轉換

Go 有著非常嚴格的強型別特徵。Go 沒有自動型別提升或類型轉換。
例:

package main  import "fmt"func main(){        i := 1 // i 的類型為int        j := 5.5  // j 的類型為float64        sum := i + j //賦值sum為 i + j        fmt.Println(sum)}

以上程式會報錯:

i + j (mismatched types int and float64)

試圖將兩個不同類型的數相加是不行的,所以需要將 i 轉換成float64類型
例:

package main  import "fmt"func main(){        i := 1 // i 的類型為int        j := 5.5  // j 的類型為float64        sum := float64(i) + j //賦值sum為 i + j,轉換 i 的類型為float64        fmt.Println(sum)}

以上運行結果如下:

6.5

注意:本例中將 i 轉換為float64,運算正常。若將 j 轉換為int整數類型,則 j 變成整數,輸出結果為 6。

字串類型(string)

在Golang中,字串是位元組的集合。
例:

package main  import "fmt"func main(){        first := "Hello,everyone!" //first 賦值        second := "This is ergouzi's Mac " //second 賦值        all := first + " " + second // + 操作符用於拼接字元,將first、空格、second拼接在一起賦值給all        fmt.Println(all)}

以上運行結果如下:

Hello,everyone! This is ergouzi's Mac

以上為學習golang資料類型筆記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.