欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語(yǔ)言中的基礎(chǔ)數(shù)據(jù)類(lèi)型使用實(shí)例

 更新時(shí)間:2023年04月06日 08:52:44   作者:water  
這篇文章主要為大家介紹了Go中的基礎(chǔ)數(shù)據(jù)類(lèi)型使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

任何語(yǔ)言都有數(shù)據(jù)類(lèi)型,Go也不例外。有基礎(chǔ)的整型、浮點(diǎn)型、布爾型、字符串。還有數(shù)組、切片、結(jié)構(gòu)體、函數(shù)、map、通道等,這里主要鞏固下Go語(yǔ)言數(shù)據(jù)類(lèi)型。

基礎(chǔ)數(shù)據(jù)類(lèi)型

整型

Go中整型數(shù)據(jù)類(lèi)型主要分為

  • 有符號(hào)整型
  • 無(wú)符號(hào)整型
  • 特殊整型

有符號(hào)整型

  • int8: 8位(-128 ~ 127)
  • int16: 16位(-32768 ~ 32767)
  • int32: 32位(-2147483648 ~ 214748347)
  • int64: 64位(-9223372036854775808 ~ 9223372036854775807)
var a int8
var b int16
var c int32
var d int64

無(wú)符號(hào)整型

  • uint8: 8位(0 ~ 255)
  • uint16: 16位(0 ~ 65535)
  • uint32: 32位(0 ~ 4294967295)
  • uint64: 64位(0 ~ 18446744073709551615)
var a uint8
var b uint16
var c uint32
var d uint64

特殊整型

  • uint: 在32位操作系統(tǒng)上就是unit32,64位操作系統(tǒng)上就是uint64
  • int: 在32位操作系統(tǒng)上就是int32,64位操作系統(tǒng)上就是int64
  • unitptr: 無(wú)符號(hào)整型,用于存放一個(gè)指針
var a unit
var b int
var c unitptr

Go中也可以使用數(shù)字字面量語(yǔ)法

  • 0b開(kāi)頭的代表二進(jìn)制
  • 0o開(kāi)頭的代表八進(jìn)制
  • 0x開(kāi)頭的代表十六進(jìn)制

浮點(diǎn)型

Go中支持的浮點(diǎn)型有兩種

  • float32
  • float64
var a float32 = 3.14
var b float64 = 3.1415

復(fù)數(shù)

Go中支持的復(fù)數(shù)有兩種

  • complex64
  • complex128
var a complex64
a = 1 + 2i
var b complex128
b = 2 + 3i

復(fù)數(shù)擁有實(shí)部和虛部,complex64的實(shí)部和虛部為32位,而complex128的實(shí)部和虛部為64位

布爾值

Go中布爾值通過(guò)bool進(jìn)行類(lèi)型聲明,布爾值的數(shù)據(jù)只能時(shí)truefalse,并且布爾類(lèi)型變量的默認(rèn)值為false,Go中不允許將整型強(qiáng)制轉(zhuǎn)換為布爾型,而且布爾型無(wú)法參加數(shù)值運(yùn)算,也無(wú)法與其他類(lèi)型進(jìn)行轉(zhuǎn)換

var a bool = true
var b bool = false

字符串

Go中字符串是以雙引號(hào)包裹的內(nèi)容

var a string = "water"
var b string = "你好"

字符串的轉(zhuǎn)義符

  • \r:回車(chē)符
  • \n:換行符
  • \t:制表符
  • \':?jiǎn)我?hào)
  • \":雙引號(hào)
  • \\:反斜杠

多行字符串

Go中要定義一個(gè)多行字符串時(shí),需要使用反引號(hào)包裹

var a string = `這是
什么
`

反引號(hào)間換行將被作為字符串中的換行,但是所有的轉(zhuǎn)義字符均無(wú)效,文本將會(huì)原樣輸出

常用的操作字符串的手段

name := "water"
zhName := "中國(guó)"
join := []string{"water", "iio"}
  • len(string) 獲取字符長(zhǎng)度
// len
fmt.Println(len(name)) => 5
fmt.Println(len(zhName)) => 6 // 一個(gè)漢字占用3個(gè)字符所以是字符的長(zhǎng)度
  • utf8.RuneCountInString 獲取字符串長(zhǎng)度
// utf8.RuneCountInString
fmt.Println(utf8.RuneCountInString(name)) => 5
fmt.Println(utf8.RuneCountInString(zhName)) => 2
  • +/fmt.Sprintf 連接字符串
// +/fmt.Sprintf
fmt.Println(zhName + name) => "中國(guó)water"
fmt.Println(fmt.Sprintf("我是%s的%s", zhName, name)) => "我是中國(guó)的water"
  • strings.Split 分割字符串
fmt.Println(strings.Split(name, "")) => [w a t e r]
  • strings.Contains 判斷是否包含子字符串
fmt.Println(strings.Contains(name, "w")) => true
  • strings.HasPrefix 判斷是否以子字符串開(kāi)頭
fmt.Println(strings.HasPrefix(name, "w")) => true
  • strings.HasSuffix 判斷是否以子字符串結(jié)尾
fmt.Println(strings.HasSuffix(name, "r")) => true
  • strings.Index() 判斷子字符串或字符在父字符串中出現(xiàn)的位置(索引)
fmt.Println(strings.Index(name, "r")) => 4
  • strings.LastIndex() 返回子字符串在字符串中最后出現(xiàn)位置的索引( 子字符串的第一個(gè)字符的索引)
fmt.Println(strings.LastIndex("waterte", "te")) => 5
  • strings.Join(a[]string,sep string) 把切片連接成字符串
fmt.Println(strings.Join(join, ",")) => "water,iio"

byte和rune類(lèi)型

Go中組成字符串的叫做字符,每個(gè)字符串都有字符組成,一般可以通過(guò)遍歷或者單個(gè)獲取字符串元素獲得字符。字符用單引號(hào)包裹

var a = '我'
var b = 't'

Go中字符有兩種

  • uint8類(lèi)型也叫byte型,代表一個(gè)ASCII碼字符
  • rune類(lèi)型,代表一個(gè)UTF-8字符

當(dāng)需要處理中文、日文或者其他復(fù)合字符時(shí),則需要用到rune類(lèi)型。rune類(lèi)型實(shí)際是一個(gè)int32

Go 使用了特殊的 rune 類(lèi)型來(lái)處理 Unicode,讓基于 Unicode 的文本處理更為方便,也可以使用 byte 型進(jìn)行默認(rèn)字符串處理,性能和擴(kuò)展性都有照顧。

因?yàn)?code>UTF8編碼下一個(gè)中文漢字由3~4個(gè)字節(jié)組成,所以我們不能簡(jiǎn)單的按照字節(jié)去遍歷一個(gè)包含中文的字符串,否則就會(huì)出現(xiàn)上面輸出中第一行的結(jié)果。

字符串底層是一個(gè)byte數(shù)組,所以可以和[]byte類(lèi)型相互轉(zhuǎn)換。字符串是不能修改的 字符串是由byte字節(jié)組成,所以字符串的長(zhǎng)度是byte字節(jié)的長(zhǎng)度。 rune類(lèi)型用來(lái)表示utf8字符,一個(gè)rune字符由一個(gè)或多個(gè)byte組成。

修改字符串

要修改字符串,需要先將其轉(zhuǎn)換成[]rune[]byte,完成后再轉(zhuǎn)換為string。無(wú)論哪種轉(zhuǎn)換,都會(huì)重新分配內(nèi)存,并復(fù)制字節(jié)數(shù)組。

func setString() {
   name := "water"
   // 強(qiáng)制類(lèi)型轉(zhuǎn)換
   byteName := []byte(name)
   byteName[0] = 'm'
   fmt.Println(string(byteName))
   zhName := "大熊貓"
   runeZhName := []rune(zhName)
   runeZhName[0] = '小'
   fmt.Println(string(runeZhName))
}
=>  mater
   小熊貓

類(lèi)型轉(zhuǎn)換

Go語(yǔ)言中只有強(qiáng)制類(lèi)型轉(zhuǎn)換,沒(méi)有隱式類(lèi)型轉(zhuǎn)換。該語(yǔ)法只能在兩個(gè)類(lèi)型之間支持相互轉(zhuǎn)換的時(shí)候使用。

強(qiáng)制類(lèi)型轉(zhuǎn)換的基本語(yǔ)法如下:

T(表達(dá)式)
 fmt.Println(string(runeZhName))

小結(jié)

這就是Go中的基礎(chǔ)數(shù)據(jù)類(lèi)型,也是比較常用的一些數(shù)據(jù)類(lèi)型,希望對(duì)你有所幫助,更多關(guān)于Go基礎(chǔ)數(shù)據(jù)類(lèi)型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解讀rand.Seed(time.Now().UnixNano())的作用及說(shuō)明

    解讀rand.Seed(time.Now().UnixNano())的作用及說(shuō)明

    這篇文章主要介紹了關(guān)于rand.Seed(time.Now().UnixNano())的作用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2023-03-03
  • Go內(nèi)置序列化庫(kù)gob的使用

    Go內(nèi)置序列化庫(kù)gob的使用

    本文主要介紹了Go內(nèi)置序列化庫(kù)gob的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Golang并發(fā)編程之Channel詳解

    Golang并發(fā)編程之Channel詳解

    傳統(tǒng)的并發(fā)編程模型是基于線(xiàn)程和共享內(nèi)存的同步訪(fǎng)問(wèn)控制的,共享數(shù)據(jù)受鎖的保護(hù),使用線(xiàn)程安全的數(shù)據(jù)結(jié)構(gòu)會(huì)使得這更加容易。本文將詳細(xì)介紹Golang并發(fā)編程中的Channel,,需要的朋友可以參考下
    2023-05-05
  • 利用Go實(shí)現(xiàn)一個(gè)簡(jiǎn)易DAG服務(wù)的示例代碼

    利用Go實(shí)現(xiàn)一個(gè)簡(jiǎn)易DAG服務(wù)的示例代碼

    DAG的全稱(chēng)是Directed Acyclic Graph,即有向無(wú)環(huán)圖,DAG廣泛應(yīng)用于表示具有方向性依賴(lài)關(guān)系的數(shù)據(jù),如任務(wù)調(diào)度、數(shù)據(jù)處理流程、項(xiàng)目管理以及許多其他領(lǐng)域,下面,我將用Go語(yǔ)言示范如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的DAG服務(wù),需要的朋友可以參考下
    2024-03-03
  • Go語(yǔ)言學(xué)習(xí)筆記之文件讀寫(xiě)操作詳解

    Go語(yǔ)言學(xué)習(xí)筆記之文件讀寫(xiě)操作詳解

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言對(duì)文件進(jìn)行讀寫(xiě)操作的方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語(yǔ)言有一定的幫助,需要的可以參考一下
    2022-05-05
  • Golang 按行讀取文件的三種方法小結(jié)

    Golang 按行讀取文件的三種方法小結(jié)

    本文主要介紹了Golang 按行讀取文件的三種方法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • golang http使用踩過(guò)的坑與填坑指南

    golang http使用踩過(guò)的坑與填坑指南

    這篇文章主要介紹了golang http使用踩過(guò)的坑與填坑指南,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • 利用Go語(yǔ)言初步搭建一個(gè)web應(yīng)用的教程

    利用Go語(yǔ)言初步搭建一個(gè)web應(yīng)用的教程

    這篇文章主要介紹了利用Go語(yǔ)言初步搭建一個(gè)web應(yīng)用的教程,由于很多國(guó)人盲目迷信谷歌,導(dǎo)致Go語(yǔ)言在國(guó)內(nèi)的人氣遠(yuǎn)超國(guó)外...需要的朋友可以參考下
    2015-06-06
  • Go語(yǔ)言學(xué)習(xí)之條件語(yǔ)句使用詳解

    Go語(yǔ)言學(xué)習(xí)之條件語(yǔ)句使用詳解

    這篇文章主要介紹了Go語(yǔ)言中條件語(yǔ)句的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 詳解golang中?work與?module?的區(qū)別與聯(lián)系

    詳解golang中?work與?module?的區(qū)別與聯(lián)系

    Go?模塊通常由一個(gè)項(xiàng)目或庫(kù)組成,并包含一組隨后一起發(fā)布的?Go?包,Go?模塊通過(guò)允許用戶(hù)將項(xiàng)目代碼放在他們選擇的目錄中并為每個(gè)模塊指定依賴(lài)項(xiàng)的版本,解決了原始系統(tǒng)的許多問(wèn)題,本文將給大家介紹一下golang中?work與?module?的區(qū)別與聯(lián)系,需要的朋友可以參考下
    2023-09-09

最新評(píng)論