亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Go語言結(jié)構(gòu)體Go range的學(xué)習(xí)教程

 更新時間:2022年07月29日 09:46:56   作者:夢想橡皮擦  
這篇文章主要為大家介紹了Go語言結(jié)構(gòu)體Go range的學(xué)習(xí)教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

在前一篇博客我們學(xué)習(xí)了 Go 數(shù)組,其要求所有元素為同一數(shù)據(jù)類型,如果希望存儲不同類型的數(shù)據(jù),就要用到結(jié)構(gòu)體相關(guān)知識。

結(jié)構(gòu)體的定義:存儲相同或不同類型的數(shù)據(jù)集合。

有 C 相關(guān)經(jīng)驗,結(jié)構(gòu)體還是比較容易理解的,語法格式如下所示:

type struct_variable_type struct {
   member definition
   member definition
   ...
   member definition
}

上述語法格式的關(guān)鍵字是 structtype,struct_variable_type 是結(jié)構(gòu)體名稱,例如我們聲明一個【人】的結(jié)構(gòu)體,有姓名,有年齡,有性別。

package main
import "fmt"
// 聲明結(jié)構(gòu)體
type People struct {
	name string
	age  int
	sex  int
}
func main() {
	//使用結(jié)構(gòu)體
	people := People{
		"橡皮擦",
		18,
		0}
	fmt.Println(people)
}

在編寫的時候要注意語法格式,其中結(jié)構(gòu)體的使用代碼建議放在一行,或者右大括號緊跟最后一個元素。

使用結(jié)構(gòu)體也可以攜帶元素名,即下述寫法。

//使用結(jié)構(gòu)體
people := People{name: "橡皮擦", age: 18, sex: 0}
fmt.Println(people)

訪問結(jié)構(gòu)體成員 使用 結(jié)構(gòu)體.成員名 即可,當(dāng)然也可以用該辦法進行賦值。

//使用結(jié)構(gòu)體
var people1 People
// var people2 People
people1.name = "橡皮擦"
people1.age = 18
people1.sex = 1
fmt.Println(people1)

Go Range

作為一個 Python 程序員,關(guān)鍵字 range 是非常熟悉的,在 Go 中 range 關(guān)鍵字可以用于 for 循環(huán),用于數(shù)組它返回元素的索引和值,在后續(xù)學(xué)習(xí)的集合中返回鍵值對。

range 用于數(shù)組的語法格式如下所示:

for i,value := range a_array{
	// TODO
}

結(jié)合語法格式,編寫下述代碼:

package main
import "fmt"
var a_array = []int{1, 2, 3, 4, 5, 6, 7, 8}
func main() {
	for i, value := range a_array {
		fmt.Printf("索引:%d,值:%d\n", i, value)
	}
}

運行代碼輸出如下信息:

索引:0,值:1
索引:1,值:2
索引:2,值:3
索引:3,值:4
索引:4,值:5
索引:5,值:6
索引:6,值:7
索引:7,值:8

如果將 range 作用于字符串,可以對其每個字符進行迭代輸出。

package main
import (
	"fmt"
)
func main() {
	var str string = "xiangpica"
	for k, v := range str {
		fmt.Println(k, string(v))
	}
}

上述 str 中的內(nèi)容為純英文,k 值每次+1。

0 x
1 i
2 a
3 n
4 g
5 p
6 i
7 c
8 a

如果 str 中包含中文,k 值每次 +3,代碼如下:

func main() {
	var str string = "橡皮擦"
	for k, v := range str {
		fmt.Println(k, string(v))
	}
}

輸出結(jié)果如下:

0 橡
3 皮
6 擦

如果是中英文混拼,出現(xiàn)的結(jié)果會更加有趣。

0 x
1 i
2 a
3 n
4 g
5 橡
8 p
9 i
10 皮
13 c
14 a
15 擦

這里其實可以得到一個結(jié)論,range 迭代是的 Unicode,而不是字節(jié),返回值是 UTF-8 編碼第 1 個字節(jié)的索引,所以索引值有可能并不連續(xù)。

在編寫代碼的時候,如果不需要索引,只保留元素,可以使用廢棄占位符,代碼如下:

var str string = "xiang橡pi皮ca擦"
for _, v := range str {
	fmt.Println(string(v))
}

range 相關(guān)知識等學(xué)到切片和集合的時候,應(yīng)該還會涉及到,這里參考其它語言的經(jīng)驗,我們下篇再見。

以上就是Go語言結(jié)構(gòu)體Go range的學(xué)習(xí)教程的詳細內(nèi)容,更多關(guān)于Go range結(jié)構(gòu)體的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang之sync.Pool使用詳解

    Golang之sync.Pool使用詳解

    這篇文章主要介紹了Golang之sync.Pool使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • go語言中函數(shù)的用法示例詳解

    go語言中函數(shù)的用法示例詳解

    Go語言中函數(shù)是基本的代碼組織單元,用于封裝一段代碼,使代碼結(jié)構(gòu)更清晰、可復(fù)用,本文詳細講解了基本函數(shù)定義、參數(shù)傳遞、返回值、多返回值、匿名函數(shù)、遞歸和defer語句的使用,感興趣的朋友一起看看吧
    2024-10-10
  • go協(xié)程池實現(xiàn)原理小結(jié)

    go協(xié)程池實現(xiàn)原理小結(jié)

    本文主要介紹了go協(xié)程池實現(xiàn)原理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • Golang使用原生http實現(xiàn)中間件的代碼詳解

    Golang使用原生http實現(xiàn)中間件的代碼詳解

    中間件(middleware):常被用來做認證校驗、審計等,家常用的Iris、Gin等web框架,都包含了中間件邏輯,但有時我們引入該框架顯得較為繁重,本文將介紹通過golang原生http來實現(xiàn)中間件操作,需要的朋友可以參考下
    2024-05-05
  • 詳解go 中的 fmt 占位符

    詳解go 中的 fmt 占位符

    這篇文章主要介紹了go 中的 fmt 占位符,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 詳解Go語言中Validator庫的使用方法和用途

    詳解Go語言中Validator庫的使用方法和用途

    github.com/go-playground/validator 是一個 Go 語言的庫,用于對結(jié)構(gòu)體字段進行驗證,它提供了一種簡單而靈活的方式來定義驗證規(guī)則,在這篇文章中,我們將從一個簡單的問題出發(fā),帶你了解 Validator 庫的用途,也會介紹Validator 的基本使用
    2023-09-09
  • Golang map實現(xiàn)原理深入分析

    Golang map實現(xiàn)原理深入分析

    map是一種無序的基于key-value的數(shù)據(jù)結(jié)構(gòu),Go語言中的map是引用類型,必須初始化才能使用,下面這篇文章主要給大家介紹了關(guān)于golang中map使用的幾點注意事項,需要的朋友可以參考下
    2023-01-01
  • Go各時間字符串使用解析

    Go各時間字符串使用解析

    這篇文章主要介紹了Go各時間字符串使用解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • go語言VScode?see?'go?help?modules'?(exit?status?1)問題的解決過程

    go語言VScode?see?'go?help?modules'?(exit?statu

    最近上手學(xué)習(xí)go語言,準備在VSCode上寫程序的時候卻發(fā)現(xiàn)出了一點問題,下面這篇文章主要給大家介紹了關(guān)于go語言VScode?see?'go?help?modules'(exit?status?1)問題的解決過程,需要的朋友可以參考下
    2022-07-07
  • Go語言操作redis用法實例

    Go語言操作redis用法實例

    這篇文章主要介紹了Go語言操作redis用法,實例分析了Go語言操作redis的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02

最新評論