搜尋
首頁後端開發Golanggo語言有什麼資料類型

go語言有什麼資料類型

Jun 07, 2021 pm 02:34 PM
go語言資料類型

go語言的資料型別有:1、布林型;2、數值型別(可分為整數與浮點型);3、字串型別;4、指標型別;5、陣列型別; 6、結構化類型;7、Channel類型;8、函數類型;9、切片類型;10、介面類型;11、Map類型。

go語言有什麼資料類型

本教學操作環境:windows10系統、GO 1.11.2、Dell G3電腦。

Go 語言是一種靜態類型的程式語言,在 Go 程式語言中,資料類型用於宣告函數和變數。資料類型的出現是為了把數據分成所需內存大小不同的數據,編程的時候需要用大數據的時候才需要申請大內存,就可以充分利用內存。編譯器在進行編譯的時候,就要知道每個值的類型,這樣編譯器就知道要為這個值分配多少內存,並且知道這段分配的內存表示什麼。

基本資料類型說明

##uint8無符號8位元整數(0 到255)uint16#無符號16 位元整數(0 到65535)# uint32無符號32 位元整數(0 到4294967295)uint64無符號64 位元整數(0 到18446744073709551615)int32位元或64位元#int8有符號8 位元整數(-128到127)int16有符號16 位元整數(-32768 到32767)#int32有符號32 位元整數(-2147483648 到2147483647)int64有符號64 位元整數(-9223372036854775808 到9223372038#5372038byteruneuintptr uintptr類型只有在底層程式設計是才需要,特別是Go語言和C語言函數庫或作業系統介面互動的地方。 float32float64complex64complex128

整數

整數資料分為兩類,有符號無符號兩種型別

#有符號: int, int8, int16, int32, int64

無符號: uint, uint8, uint16, uint32, uint64, byte
不同位元數的整數差異在於能保存整數數字範圍的大小;

有符號型別可以儲存任何整數,無符號型別只能儲存自然數

int和uint的大小和系統有關,32位元系統表示int32和uint32,如果是64位元系統則表示int64和uint64

byte與uint8類似,一般用來儲存單一字元

#在保證程式正確運作下,盡量使用佔用空間小的資料類型

fmt.Printf("%T", var_name)輸出變數類型

unsafe.Sizeof(var_name)查看變數佔用位元組

浮點型

浮點型也就是小數型,可以存放小數。例如6.6,-12.34

1、關於浮點數在機器中存放形式的簡單說明,浮點數=符號位指數位尾數位

#2、尾數部分可能遺失,造成精度損失。 -123.0000901

package main

import "fmt"

func main() {
    
    var num1 float32 = -123.0000901
    var num2 float64 = -123.0000901
    fmt.Println("num1 = ", num1, "num2 = ", num2);
}

說明:float64的精度要比float32的要準確

說明:如果我們要保存一個精度高的數,則應該選擇float64

3、浮點型的儲存分為三部分:符號位指數位尾數位,在儲存過程中,精確度會有遺失

4、golang的浮點型預設為float64型別

5、通常情況下,應該使用float64,因為它比float32更精確

6、0.123可以簡寫成.123,也支持科學計數法表示:5.1234e2 等價於512.34

字元

Golang中沒有專門的字元型別,如果要儲存單一字元(字母),一般使用byte來儲存。

字串就是一串固定長度的字元連接起來的字元序列。 Go的字串是由單一位元組連接起來的,也就是說對於傳統的字串是由字元組成的,而Go的字串不同,它是由位元組組成的

  • 字元只能被單引號包裹,不能用雙引號,雙引號包裹的是字串
  • 當我們直接輸出type值時,就是輸出了對應字元的ASCII碼值
  • 當我們希望輸出對應字符,需要使用格式化輸出
  • Go語言的字符使用UTF-8編碼,英文字母佔一個字符,漢字佔三個字符
  • 在Go中,字元的本質是一個整數,直接輸出時,是該字元對應的UTF-8編碼的碼值。
  • 可以直接給某個變數賦一個數字,然後按格式化輸出時%c,會輸出該數字對應的unicode字元
  • 字元類型是可以運算的,相當於一個整數,因為它們都有對應的unicode碼
package main

import "fmt"

func main() {
    
    //字符只能被单引号包裹,不能用双引号,双引号包裹的是字符串
    var c1 byte = 'a'
    var c2 byte = '0'

    //当我们直接输出type值时,就是输出了对应字符的ASCII码值
    //'a' ==> 97
    fmt.Println(c1, "--", c2)
    //如果我们希望输出对应字符,需要使用格式化输出
    fmt.Printf("c2 = %c c2 = %c", c1, c2)
}

#但是如果我們保存的字元大於255,例如儲存漢字,這時byte類型就無法保存,此時可以使用uint或int型別儲存

字元型別本質探討

  • #字元類型儲存到電腦中,需要將字元對應的碼值(整數)找出來

    儲存:字元--> 碼值--> 二進位--> 儲存

    讀取: 二進位-->碼值-->字元--> 讀取

  • 字元和碼值的對應關係是透過字元編碼表決定的(是規定好的)

  • Go語言的編碼都統一成了UTF-8。非常的方便,很統一,再也沒有編碼亂碼的困擾了

布爾型

布爾類型也叫做bool類型,bool類型資料只允許取值true或false

bool型別佔1個位元組

bool型別適用於邏輯運算,一般用於流程控制

字串

#字串就是一串固定長度的字元連接起來的字元序列。 Go的字串是由單一位元組連接起來的。 Go語言的字串的位元組使用UTF-8編碼來識別Unicode文字

1、字串一旦賦值了,就不能修改了:在Go中字串是不可變的。

2、字串的兩個識別形式

  • 雙引號,會辨識轉義字元

    var str = "abc\nabc" //输出时会换行
  • #反引號,以字串的原生形式輸出,包括換行和特殊字符,可以實現防止攻擊、輸出原始碼等效果

    var str string = `abc\nabc` //输出时原样输出,不会转义

3、字串拼接方式" "

var str string = "hello " + "world"
str += "!"

4、當一行字串太長時,需要使用到多行字串,可以使用以下處理

//正确写法
str := "hello" + 
	" world!"
fmt.Println(str)

//错误写法
str := "hello "
	+ "world!"
fmt.Println(str)

指標

  • 基本資料型,變數存的就是值,也叫值型別

  • 取得變數的位址,用&,例如var num int,取得num的位址:&num

  • 指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值,比如:var ptr *int = &num

  • 获取指针类型所指向的值,使用:*,比如,var ptr *int,使用*ptr获取ptr指向的值

指针细节说明:

  • 值类型,都有对应的指针类型,形式为*数据类型,比如int对应的指针就是*int,float64对应的指针类型就是*float64,依此类推。

  • 值类型包括:基本数据类型数组结构体struct

值类型与引用类型

值类型和引用类型使用特点:

值类型:变量直接存储值,内存通常在中分配

引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在上分配,当没有任何变量应用这个地址时,该地址对应的数据空间就成为一个垃圾,由GC来回收。

Golang中值类型和引用类型的区分

  • 值类型:基本数据类型(int系列、float系列、bool、string)、数组和结构体

  • 引用类型:指针、slice切片、map、管道chan、interface等都是引用类型

基本数据类型默认值

在Golang中,数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值,在Golang中,默认值也叫做零值。

基本数据类型默认值如下:

#類型 描述
uint #32位元或64位元
uint8的別名(type byte = uint8)
int32的別名(type rune = int32),表示一個unicode碼
#無符號整數,用來存放一個指標是一種無符號的整數類型,沒有指定特定的bit大小但是足以容納指針。
IEEE-754 32位元浮點型數
#IEEE-754 64位元浮點數型數
32 位元實數與虛數
64位實數和虛數
数据类型 默认值
整型 0
浮点型 0
字符串 ""
布尔类型 false
package main

import "fmt"

func main() {
    
    var a int
    var b float32
    var isTrue bool
    var str string

    //这里的%v,表示按照变量的值输出
    fmt.Printf("a = %v, b = %v, isTrue = %v, str = %v", a, b, isTrue, str)
    fmt.Println("")
}

推荐学习:Golang教程

以上是go語言有什麼資料類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
在Golang和Python之間進行選擇:適合您的項目在Golang和Python之間進行選擇:適合您的項目Apr 19, 2025 am 12:21 AM

golangisidealforperformance-Critical-clitageAppations and ConcurrentPrompromming,而毛皮刺激性,快速播種和可及性。 1)forhigh-porformanceneeds,pelectgolangduetoitsefefsefefseffifeficefsefeflicefsiveficefsiveandconcurrencyfeatures.2)fordataa-fordataa-fordata-fordata-driventriventriventriventriventrivendissp pynonnononesp

Golang:並發和行動績效Golang:並發和行動績效Apr 19, 2025 am 12:20 AM

Golang通過goroutine和channel實現高效並發:1.goroutine是輕量級線程,使用go關鍵字啟動;2.channel用於goroutine間安全通信,避免競態條件;3.使用示例展示了基本和高級用法;4.常見錯誤包括死鎖和數據競爭,可用gorun-race檢測;5.性能優化建議減少channel使用,合理設置goroutine數量,使用sync.Pool管理內存。

Golang vs. Python:您應該學到哪種語言?Golang vs. Python:您應該學到哪種語言?Apr 19, 2025 am 12:20 AM

Golang更適合系統編程和高並發應用,Python更適合數據科學和快速開發。 1)Golang由Google開發,靜態類型,強調簡潔性和高效性,適合高並發場景。 2)Python由GuidovanRossum創造,動態類型,語法簡潔,應用廣泛,適合初學者和數據處理。

Golang vs. Python:性能和可伸縮性Golang vs. Python:性能和可伸縮性Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

Golang vs.其他語言:比較Golang vs.其他語言:比較Apr 19, 2025 am 12:11 AM

Go語言在並發編程、性能、學習曲線等方面有獨特優勢:1.並發編程通過goroutine和channel實現,輕量高效。 2.編譯速度快,運行性能接近C語言。 3.語法簡潔,學習曲線平緩,生態系統豐富。

Golang和Python:了解差異Golang和Python:了解差異Apr 18, 2025 am 12:21 AM

Golang和Python的主要區別在於並發模型、類型系統、性能和執行速度。 1.Golang使用CSP模型,適用於高並發任務;Python依賴多線程和GIL,適合I/O密集型任務。 2.Golang是靜態類型,Python是動態類型。 3.Golang編譯型語言執行速度快,Python解釋型語言開發速度快。

Golang vs.C:評估速度差Golang vs.C:評估速度差Apr 18, 2025 am 12:20 AM

Golang通常比C 慢,但Golang在並發編程和開發效率上更具優勢:1)Golang的垃圾回收和並發模型使其在高並發場景下表現出色;2)C 通過手動內存管理和硬件優化獲得更高性能,但開發複雜度較高。

Golang:雲計算和DevOps的關鍵語言Golang:雲計算和DevOps的關鍵語言Apr 18, 2025 am 12:18 AM

Golang在雲計算和DevOps中的應用廣泛,其優勢在於簡單性、高效性和並發編程能力。 1)在雲計算中,Golang通過goroutine和channel機制高效處理並發請求。 2)在DevOps中,Golang的快速編譯和跨平台特性使其成為自動化工具的首選。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具