Go語(yǔ)言數(shù)據(jù)類(lèi)型簡(jiǎn)單介紹
數(shù)據(jù)類(lèi)型是編程中的重要概念。數(shù)據(jù)類(lèi)型指定了變量值的大小和類(lèi)型。
Go是靜態(tài)類(lèi)型的,這意味著一旦變量類(lèi)型被定義,它只能存儲(chǔ)該類(lèi)型的數(shù)據(jù)。
Go有三種基本數(shù)據(jù)類(lèi)型:
- bool:表示布爾值,要么是true,要么是false。
- 數(shù)值型:表示整數(shù)類(lèi)型、浮點(diǎn)數(shù)值和復(fù)數(shù)類(lèi)型。
- string:表示字符串值。
示例
以下示例展示了Go中的一些不同數(shù)據(jù)類(lèi)型:
package main
import ("fmt")
func main() {
var a bool = true // 布爾值
var b int = 5 // 整數(shù)
var c float32 = 3.14 // 浮點(diǎn)數(shù)
var d string = "Hi!" // 字符串
fmt.Println("布爾值: ", a)
fmt.Println("整數(shù): ", b)
fmt.Println("浮點(diǎn)數(shù): ", c)
fmt.Println("字符串: ", d)
}布爾數(shù)據(jù)類(lèi)型
布爾數(shù)據(jù)類(lèi)型使用bool關(guān)鍵字聲明,只能取值true或false。
布爾數(shù)據(jù)類(lèi)型的默認(rèn)值是false。
示例
以下示例展示了聲明布爾變量的不同方式:
package main
import ("fmt")
func main() {
var b1 bool = true // 有類(lèi)型聲明和初始值
var b2 = true // 無(wú)類(lèi)型聲明但有初始值
var b3 bool // 有類(lèi)型聲明但無(wú)初始值
b4 := true // 無(wú)類(lèi)型聲明但有初始值
fmt.Println(b1) // 輸出 true
fmt.Println(b2) // 輸出 true
fmt.Println(b3) // 輸出 false
fmt.Println(b4) // 輸出 true
}Go整數(shù)數(shù)據(jù)類(lèi)型
整數(shù)數(shù)據(jù)類(lèi)型用于存儲(chǔ)沒(méi)有小數(shù)點(diǎn)的整數(shù),例如35、-50或1345000。
整數(shù)數(shù)據(jù)類(lèi)型有兩個(gè)類(lèi)別:
- 有符號(hào)整數(shù) - 可以存儲(chǔ)正數(shù)和負(fù)數(shù)
- 無(wú)符號(hào)整數(shù) - 只能存儲(chǔ)非負(fù)數(shù)
提示:整數(shù)的默認(rèn)類(lèi)型是int。如果不指定類(lèi)型,類(lèi)型將為int。
有符號(hào)整數(shù)
使用int關(guān)鍵字聲明的有符號(hào)整數(shù)可以存儲(chǔ)正數(shù)和負(fù)數(shù):
示例
package main
import ("fmt")
func main() {
var x int = 500
var y int = -4500
fmt.Printf("類(lèi)型: %T, 值: %v", x, x)
fmt.Printf("類(lèi)型: %T, 值: %v", y, y)
}Go有五個(gè)有符號(hào)整數(shù)的關(guān)鍵字/類(lèi)型:
| 類(lèi)型 | 大小 | 范圍 |
|---|---|---|
| int | 取決于平臺(tái): | 在32位系統(tǒng)中為 -2147483648 到 2147483647, |
| 32位系統(tǒng)為32位, | 在64位系統(tǒng)中為 -9223372036854775808 到 9223372036854775807 | |
| 64位系統(tǒng)為64位 | ||
| int8 | 8位/1字節(jié) | -128 到 127 |
| int16 | 16位/2字節(jié) | -32768 到 32767 |
| int32 | 32位/4字節(jié) | -2147483648 到 2147483647 |
| int64 | 64位/8字節(jié) | -9223372036854775808 到 9223372036854775807 |
無(wú)符號(hào)整數(shù)
使用uint關(guān)鍵字聲明的無(wú)符號(hào)整數(shù)只能存儲(chǔ)非負(fù)數(shù):
示例
package main
import ("fmt")
func main() {
var x uint = 500
var y uint = 4500
fmt.Printf("類(lèi)型: %T, 值: %v", x, x)
fmt.Printf("類(lèi)型: %T, 值: %v", y, y)
}Go有五個(gè)無(wú)符號(hào)整數(shù)的關(guān)鍵字/類(lèi)型:
| 類(lèi)型 | 大小 | 范圍 |
|---|---|---|
| uint | 取決于平臺(tái): | 在32位系統(tǒng)中為 0 到 4294967295, |
| 32位系統(tǒng)為32位, | 在64位系統(tǒng)中為 0 到 18446744073709551615 | |
| 64位系統(tǒng)為64位 | ||
| uint8 | 8位/1字節(jié) | 0 到 255 |
| uint16 | 16位/2字節(jié) | 0 到 65535 |
| uint32 | 32位/4字節(jié) | 0 到 4294967295 |
| uint64 | 64位/8字節(jié) | 0 到 18446744073709551615 |
選擇整數(shù)類(lèi)型取決于變量需要存儲(chǔ)的值。
示例
以下示例會(huì)導(dǎo)致錯(cuò)誤,因?yàn)?000超出了int8的范圍(范圍是從-128到127):
package main
import ("fmt")
func main() {
var x int8 = 1000
fmt.Printf("類(lèi)型: %T, 值: %v", x, x)
}結(jié)果:
./prog.go:5:7: constant 1000 overflows int8
Go浮點(diǎn)數(shù)數(shù)據(jù)類(lèi)型
浮點(diǎn)數(shù)數(shù)據(jù)類(lèi)型用于存儲(chǔ)帶有小數(shù)點(diǎn)的正數(shù)和負(fù)數(shù),例如35.3、-2.34或3597.34987。
浮點(diǎn)數(shù)數(shù)據(jù)類(lèi)型有兩個(gè)關(guān)鍵字:
類(lèi)型 大小 范圍
- float32 32位 -3.4e+38 到 3.4e+38。
- float64 64位 -1.7e+308 到 +1.7e+308。
提示:浮點(diǎn)數(shù)的默認(rèn)類(lèi)型是float64。如果不指定類(lèi)型,類(lèi)型將為float64。
float32關(guān)鍵字
示例
以下示例展示了如何聲明一些float32類(lèi)型的變量:
package main
import (
"fmt"
)
func main() {
var x float32 = 123.78
var y float32 = 3.4e+38
fmt.Printf("類(lèi)型:%T,值:%v\n", x, x)
fmt.Printf("類(lèi)型:%T,值:%v", y, y)
}float64關(guān)鍵字
與float32相比,float64數(shù)據(jù)類(lèi)型可以存儲(chǔ)更大范圍的數(shù)字。
示例
以下示例展示了如何聲明一個(gè)float64類(lèi)型的變量:
package main
import (
"fmt"
)
func main() {
var x float64 = 1.7e+308
fmt.Printf("類(lèi)型:%T,值:%v", x, x)
}選擇使用哪種浮點(diǎn)類(lèi)型取決于變量需要存儲(chǔ)的值。
示例
以下示例會(huì)導(dǎo)致錯(cuò)誤,因?yàn)?.4e+39超出了float32的范圍:
package main
import (
"fmt"
)
func main() {
var x float32 = 3.4e+39
fmt.Println(x)
}結(jié)果:
./prog.go:5:7: constant 3.4e+39 overflows float32
字符串?dāng)?shù)據(jù)類(lèi)型
字符串?dāng)?shù)據(jù)類(lèi)型用于存儲(chǔ)字符序列(文本)。字符串值必須用雙引號(hào)括起來(lái):
示例
package main
import (
"fmt"
)
func main() {
var txt1 string = "Hello!"
var txt2 string
txt3 := "World 1"
fmt.Printf("類(lèi)型:%T,值:%v\n", txt1, txt1)
fmt.Printf("類(lèi)型:%T,值:%v\n", txt2, txt2)
fmt.Printf("類(lèi)型:%T,值:%v\n", txt3, txt3)
}結(jié)果:
Type: string, value: Hello! Type: string, value: Type: string, value: World 1
到此這篇關(guān)于Go語(yǔ)言數(shù)據(jù)類(lèi)型簡(jiǎn)單介紹的文章就介紹到這了,更多相關(guān)Go 數(shù)據(jù)類(lèi)型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Go語(yǔ)言基礎(chǔ)語(yǔ)法和基本數(shù)據(jù)類(lèi)型知識(shí)鞏固
- 夯實(shí)Golang基礎(chǔ)之?dāng)?shù)據(jù)類(lèi)型梳理匯總
- 淺析Go常量為什么只支持基本數(shù)據(jù)類(lèi)型
- 深入了解Golang中的數(shù)據(jù)類(lèi)型
- Golang數(shù)據(jù)類(lèi)型比較詳解
- Go語(yǔ)言中的基礎(chǔ)數(shù)據(jù)類(lèi)型使用實(shí)例
- 重學(xué)Go語(yǔ)言之基礎(chǔ)數(shù)據(jù)類(lèi)型詳解
- 淺析Go語(yǔ)言的數(shù)據(jù)類(lèi)型及數(shù)組
- Go語(yǔ)言中基本數(shù)據(jù)類(lèi)型的相互轉(zhuǎn)換詳解
- Go基本數(shù)據(jù)類(lèi)型的具體使用
相關(guān)文章
golang在GRPC中設(shè)置client的超時(shí)時(shí)間
這篇文章主要介紹了golang在GRPC中設(shè)置client的超時(shí)時(shí)間,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
golang求連續(xù)子數(shù)組的最大和實(shí)例
這篇文章主要介紹了golang求連續(xù)子數(shù)組的最大和實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
Go標(biāo)準(zhǔn)庫(kù)日志打印及同時(shí)輸出到控制臺(tái)與文件
Go語(yǔ)言內(nèi)置的log包實(shí)現(xiàn)了簡(jiǎn)單的日志服務(wù),下面這篇文章主要給大家介紹了關(guān)于Go標(biāo)準(zhǔn)庫(kù)日志打印及同時(shí)輸出到控制臺(tái)與文件的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
Golang使用Gin框架實(shí)現(xiàn)HTTP上傳文件過(guò)程介紹
由于需求中有文件上傳這一個(gè)需求,在這里我們就學(xué)習(xí)一下go語(yǔ)言如何上傳文件。本文主要通過(guò)表單的方式進(jìn)行文件上傳操作,本文實(shí)例為大家分享了Go實(shí)現(xiàn)文件上傳操作的具體代碼,供大家參考,具體內(nèi)容如下2023-04-04
golang實(shí)現(xiàn)并發(fā)控制的方法和技巧
golang 是一門(mén)支持并發(fā)的編程語(yǔ)言,它提供了 goroutine 和 channel 等強(qiáng)大的特性,讓我們可以輕松地創(chuàng)建和管理多個(gè)執(zhí)行單元,實(shí)現(xiàn)高效的任務(wù)處理,在本文中,我們將介紹一些 golang 的并發(fā)控制的方法和技巧,希望對(duì)你有所幫助2024-03-03

