最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析Go語言的數(shù)據(jù)類型及數(shù)組

 更新時間:2022年11月22日 14:52:22   作者:掘金小逆  
Golang是一種靜態(tài)強類型、編譯型語言。Go?語言語法與?C?相近,但功能上有:內存安全,GC(垃圾回收),結構形態(tài)及?CSP-style?并發(fā)計算。本文主要和大家聊聊Go語言的數(shù)據(jù)類型及數(shù)組,希望對大家有所幫助

Go語言身世簡介

Go(又稱 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發(fā)的一種靜態(tài)強類型、編譯型語言。Go 語言語法與 C 相近,但功能上有:內存安全,GC(垃圾回收),結構形態(tài)及 CSP-style 并發(fā)計算。

Go語言的第一個程序

我們使用的IDE工具為GoLand(沒錯,又是Jetbrains家的產(chǎn)物,我是重度愛好者),在寫Go程序之前,我們首先得配置好Go語言的開發(fā)環(huán)境,這里就不做贅述,相信憑借各位的能力,一定能夠沒問題

package main
?
import "fmt"
?
func main() {
    fmt.Println(123456)
}

這里是Go語言的第一個程序,我們把這個程序拆分下來細看一下

首先是package,相信有語言基礎的同學都能夠明白這個是的意思,我們導入的是main的包,讀者可以理解為一種約定俗成,沒有main的話,你的Go程序會出現(xiàn)奇奇怪怪的問題

其次,是import,這里指的是導入的意思,我們導入了fmt這個庫,經(jīng)過求證,fmt該庫是用來格式化輸入輸出,也就是我們所說的java中的System.out.println();或者是JavaScript中的console.log(),這么一說,相信大家也不陌生

Go語言的數(shù)據(jù)類型

在介紹數(shù)據(jù)類型之前,想為讀者介紹的是,Go語言是沒有以分號結尾的這個習慣,而且是先聲明var類型(一般情況下都是var類型的數(shù)據(jù)),緊接著聲明變量名數(shù)據(jù)類型

var name string
var age int
var sex bool

同時我們還加入了一種懶人寫法,想到這里大家可能就想到了結構體,將同種聲明含義的變量放到一個大括號里面,沒錯,在Go語言中也能過實現(xiàn)這一操作

var (
        name string
        age int
        sex bool
        pwd float32
    )

這么一看,似乎下面的方法要高效的多

Go語言匿名變量

很多小伙伴第一次看到這個匿名變量,有點發(fā)懵。其實可以這么理解,匿名變量顧名思義,就是不想讓人知道,在Go語言中我們可以用_來代替,要注意的是:匿名變量不占用命名空間,不會分配內存

func foo() (int, string) {
 ? ?return 10, "Q1mi"
}
func main() {
 ? ?x, _ := foo()
 ? ?_, y := foo()
 ? ?fmt.Println("x=", x)
 ? ?fmt.Println("y=", y)
}

在這個代碼塊中我們可以看到,我們定義了一個foo方法用于保存相關參數(shù),第一個參數(shù)類型為int,第二個參數(shù)類型為string;緊接著我們在main方法中,使用匿名變量去調用foo方法,為了體現(xiàn)差異,我們進行二次方法調用,最后輸出的結果顯而易見(寫上方的demo是為了驗證匿名變量的使用)

Go語言的數(shù)據(jù)類型

iotago語言的常量計數(shù)器,它只能在常量的表達式中使用(作者覺得這一點非常的人性化,因為以往在java中,這一功能需要聲明一個變量+for循環(huán)才能實現(xiàn),go語言yyds!

貼一張從Google找的圖片,請讀者自行查閱數(shù)據(jù)類型及其所對應的范圍

類型長度(字節(jié))默認值說明
bool1false
byte10uint8
rune40Unicode Code Point, int32
int, uint4或8032 或 64 位
int8, uint810-128 ~ 127, 0 ~ 255,byte是uint8 的別名
int16, uint1620-32768 ~ 32767, 0 ~ 65535
int32, uint3240-21億~ 21億, 0 ~ 42億,rune是int32 的別名
int64, uint6480
float3240.0
float6480.0
complex648
complex12816
uintptr4或8以存儲指針的 uint32 或 uint64 整數(shù)
array值類型
struct值類型
string“”UTF-8 字符串
slicenil引用類型
mapnil引用類型
channelnil引用類型
interfacenil接口
functionnil函數(shù)

至于讀者想問的字符串轉化、轉義字符這些問題,作者并沒有給出詳細的介紹,因為這些相關介紹讀者都是能夠直接在網(wǎng)上查閱到的,在此不作贅述

Go語言中的數(shù)組

今天作者花了大量的時間來學習Go語言,其中有一半的時間都花在了數(shù)組上面

首先我們來看Go語言文檔中對于數(shù)組的定義

1. 數(shù)組:是同一種數(shù)據(jù)類型的固定長度的序列。

2. 數(shù)組定義:var a [len]int,比如:var a [5]int,數(shù)組長度必須是常量,且是類型的組成部分。一旦定義,長度不能變。

3. 長度是數(shù)組類型的一部分,因此,var a[5] int和var a[10]int是不同的類型。

4. 數(shù)組可以通過下標進行訪問,下標是從0開始,最后一個元素下標是:len-1

很多讀者反應:你給我們看這些也沒用啊,沒有實際的例子我們看不懂?。?!

一維數(shù)組

func main() {
    a := [3]int{1, 2}
    b := [...]int{1, 2, 3, 4}
    c := [5]int{2: 100, 4: 100}
    d := [2]struct {
        name string
        age ?uint8
    }{
        {"user1", 10},
        {"user2", 20},
    }
    fmt.Println(a, b, c, d)
}

對于上方代碼,我們做出如下的詳細解析

  • 首先我們可以看到a變量開拓了一個數(shù)組長度為3的變量,但是只聲明了2個變量,還有一個變量未進行變量初始化,在Go語言中,我們將未定義的數(shù)組的初始化變量為0
  • 其次我們可以看到b變量開拓了一個任意長度的數(shù)組,同時進行相應的賦值操作,在Go語言中,如果我們不確定數(shù)組的長度,我們就可以使用...來代替數(shù)組的長度,類似于一種動態(tài)數(shù)組
  • 緊接著我們可以看到c變量比較特殊,在變量里面聲明了相關數(shù)值,c數(shù)組里面的第一個2是代表從第三個開始輸出100,4同理
  • 最后數(shù)組d采用結構體的形式,在結構體之前聲明該結構體所需的容量

這里就有小伙伴要問了,能不能使用...來代替結構體前面的數(shù)字,作者給出的答復是:可以但沒必要;因為你下面的括號里面要聲明具體的數(shù)據(jù)類型所對應的值,你既然能夠知道具體有幾個數(shù)來對應數(shù)據(jù)類型,又何必使用...來代替呢?

二維數(shù)組

func main() {
    a := [2][3]int{{1, 2, 3}, {4, 5, 6}}
    b := [...][2]int{{1, 1}, {2, 2}, {3, 3}}
    fmt.Println(arr0, arr1)
    fmt.Println(a, b)
}

對于上方代碼,我們做出如下的詳細解析

  • 首先我們可以看到a數(shù)組定義了一個長2寬3的數(shù)組,第一個數(shù)組里面存放的是123,第二個數(shù)組里面存放的是456,相信這一步對絕大部分讀者來說并無異議
  • 其次,我們可以看到的是,在b數(shù)組中,我們使用...來自定義數(shù)組長度,這一點有效的解決了動態(tài)數(shù)組容量的問題。值得一提的是,在二維數(shù)組里面,我們不能將第二個維度的數(shù)組設置成...,否則數(shù)組的長度及定義就會出現(xiàn)歧義,具體原因讀者自行想象

到此這篇關于淺析Go語言的數(shù)據(jù)類型及數(shù)組的文章就介紹到這了,更多相關Go 數(shù)據(jù)類型 數(shù)組內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Go 創(chuàng)建命令行工具的方法

    詳解Go 創(chuàng)建命令行工具的方法

    這篇文章主要介紹了詳解Go 創(chuàng)建命令行工具,需要的朋友可以參考下
    2020-12-12
  • Golang 端口復用測試的實現(xiàn)

    Golang 端口復用測試的實現(xiàn)

    這篇文章主要介紹了Golang 端口復用測試的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • golang原生http包實現(xiàn)各種情況的get請求方式

    golang原生http包實現(xiàn)各種情況的get請求方式

    這篇文章主要介紹了golang原生http包實現(xiàn)各種情況的get請求方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Go實現(xiàn)凱撒密碼加密解密

    Go實現(xiàn)凱撒密碼加密解密

    這篇文章主要為大家介紹了Go實現(xiàn)凱撒密碼加密解密示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Go語言安裝和GoLand2021最全超詳細安裝教程

    Go語言安裝和GoLand2021最全超詳細安裝教程

    Go語言和GoLand的關系好比于java和idea、python和pycharm,因此我們需要先安裝好Go語言后才能安裝GoLand。它的安裝和java,python的安裝大同小異,好了,下面給大家?guī)砹薌oLand2021安裝教程,需要的朋友參考下吧
    2021-08-08
  • Go語言基礎閉包的原理分析示例詳解

    Go語言基礎閉包的原理分析示例詳解

    這篇文章主要為大家介紹了Go語言基礎閉包的底層原理及實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2021-11-11
  • go內存緩存BigCache使用入門詳解

    go內存緩存BigCache使用入門詳解

    這篇文章主要為大家介紹了go內存緩存BigCache使用入門詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • golang解析json數(shù)據(jù)的4種方法總結

    golang解析json數(shù)據(jù)的4種方法總結

    在日常工作中每一名開發(fā)者,不管是前端還是后端,都經(jīng)常使用 JSON,下面這篇文章主要給大家介紹了關于golang解析json數(shù)據(jù)的4種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • Golang 讀取并解析SQL文件的實現(xiàn)方法

    Golang 讀取并解析SQL文件的實現(xiàn)方法

    本文介紹了如何使用Go語言編寫一個簡單的函數(shù),用于讀取并解析SQL文件,通過一個函數(shù),我們可以輕松地將SQL文件中的語句提取出來,進行后續(xù)的操作,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Go語言中JSON文件的讀寫操作

    Go語言中JSON文件的讀寫操作

    本文主要介紹了Go語言JSON文件的讀寫操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04

最新評論

金山区| 通山县| 章丘市| 黄石市| 阳城县| 灵石县| 常山县| 德昌县| 通榆县| 宣恩县| 英吉沙县| 南木林县| 大冶市| 桦川县| 盐亭县| 探索| 斗六市| 娱乐| 盘锦市| 永城市| 宝鸡市| 阳山县| 山阴县| 奇台县| 铜梁县| 长寿区| 祥云县| 南华县| 崇州市| 新巴尔虎左旗| 广平县| 永宁县| 渝北区| 洮南市| 汾阳市| 吉首市| 黑山县| 黄石市| 安福县| 秭归县| 乐业县|