中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言的數據類型及數組有哪些

發布時間:2022-11-23 09:58:45 來源:億速云 閱讀:109 作者:iii 欄目:開發技術

今天小編給大家分享一下Go語言的數據類型及數組有哪些的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Go語言身世簡介

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

Go語言的第一個程序

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

package main

import "fmt"

func main() {
    fmt.Println(123456)
}

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

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

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

Go語言的數據類型

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

var name string
var age int
var sex bool

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

var (
        name string
        age int
        sex bool
        pwd float32
    )

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

Go語言匿名變量

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

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

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

Go語言的數據類型

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

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

類型長度(字節)默認值說明
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 整數
array

值類型
struct

值類型
string
“”UTF-8 字符串
slice
nil引用類型
map
nil引用類型
channel
nil引用類型
interface
nil接口
function
nil函數

Go語言中的數組

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

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

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

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

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

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

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

一維數組

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變量開拓了一個數組長度為3的變量,但是只聲明了2個變量,還有一個變量未進行變量初始化,在Go語言中,我們將未定義的數組的初始化變量為0

  • 其次我們可以看到b變量開拓了一個任意長度的數組,同時進行相應的賦值操作,在Go語言中,如果我們不確定數組的長度,我們就可以使用...來代替數組的長度,類似于一種動態數組

  • 緊接著我們可以看到c變量比較特殊,在變量里面聲明了相關數值,c數組里面的第一個2是代表從第三個開始輸出100,4同理

  • 最后數組d采用結構體的形式,在結構體之前聲明該結構體所需的容量

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

二維數組

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數組定義了一個長2寬3的數組,第一個數組里面存放的是123,第二個數組里面存放的是456,相信這一步對絕大部分讀者來說并無異議

  • 其次,我們可以看到的是,在b數組中,我們使用...來自定義數組長度,這一點有效的解決了動態數組容量的問題。值得一提的是,在二維數組里面,我們不能將第二個維度的數組設置成...,否則數組的長度及定義就會出現歧義

以上就是“Go語言的數據類型及數組有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

钟山县| 秭归县| 绵竹市| 潢川县| 小金县| 九寨沟县| 岳阳市| 怀宁县| 乌鲁木齐县| 岗巴县| 揭东县| 东台市| 华亭县| 兴宁市| 乌拉特中旗| 阜平县| 滕州市| 会泽县| 稷山县| 抚远县| 开化县| 徐州市| 九台市| 五大连池市| 明光市| 鲜城| 中西区| 连山| 正宁县| 定安县| 报价| 平安县| 高州市| 县级市| 金乡县| 兖州市| 大兴区| 京山县| 阜康市| 那坡县| 涞源县|