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

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

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

正文

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

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

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

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

上述語(yǔ)法格式的關(guān)鍵字是 structtype,struct_variable_type 是結(jié)構(gòu)體名稱(chēng),例如我們聲明一個(gè)【人】的結(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)
}

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

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

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

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

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

Go Range

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

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

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

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

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)
	}
}

運(yùn)行代碼輸出如下信息:

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

如果將 range 作用于字符串,可以對(duì)其每個(gè)字符進(jìn)行迭代輸出。

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é)果會(huì)更加有趣。

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

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

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

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

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

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

相關(guān)文章

  • 一文探索Go語(yǔ)言中的內(nèi)存對(duì)齊

    一文探索Go語(yǔ)言中的內(nèi)存對(duì)齊

    在 Go 語(yǔ)言中,內(nèi)存對(duì)齊是一個(gè)經(jīng)常被忽略但非常重要的概念,本文將通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)探討 Go 語(yǔ)言中的內(nèi)存對(duì)齊機(jī)制,感興趣的可以了解下
    2024-11-11
  • Go?語(yǔ)言?json解析框架與?gjson?詳解

    Go?語(yǔ)言?json解析框架與?gjson?詳解

    這篇文章主要介紹了Go語(yǔ)言json解析框架與gjson,JSON?解析是我們不可避免的常見(jiàn)問(wèn)題,在Go語(yǔ)言中,我們可以借助gjson庫(kù)來(lái)方便的進(jìn)行json屬性的提取與解析,需要的朋友可以參考一下
    2022-07-07
  • 在Golang中正確的修改HTTPRequest的Host的操作方法

    在Golang中正確的修改HTTPRequest的Host的操作方法

    我們工作中經(jīng)常需要通過(guò)HTTP請(qǐng)求Server的服務(wù),比如腳本批量請(qǐng)求接口跑數(shù)據(jù),由于一些網(wǎng)關(guān)策略,部分Server會(huì)要求請(qǐng)求中Header里面附帶Host參數(shù),所以本文給大家介紹了如何在Golang中正確的修改HTTPRequest的Host,需要的朋友可以參考下
    2023-12-12
  • Golang實(shí)現(xiàn)yaml配置文件的解析

    Golang實(shí)現(xiàn)yaml配置文件的解析

    這篇文章主要介紹了Golang實(shí)現(xiàn)yaml配置文件的解析,文中通過(guò)圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-12-12
  • GoLand利用plantuml生成UML類(lèi)圖

    GoLand利用plantuml生成UML類(lèi)圖

    本文主要介紹了GoLand利用plantuml生成UML類(lèi)圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 通過(guò)手機(jī)案例理解Go設(shè)計(jì)模式之裝飾器模式的功能屬性

    通過(guò)手機(jī)案例理解Go設(shè)計(jì)模式之裝飾器模式的功能屬性

    這篇文章主要為大家介紹了Go設(shè)計(jì)模式之裝飾器模式的功能屬性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 對(duì)Golang import 導(dǎo)入包語(yǔ)法詳解

    對(duì)Golang import 導(dǎo)入包語(yǔ)法詳解

    今天小編就為大家分享一篇對(duì)Golang import 導(dǎo)入包語(yǔ)法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Go如何實(shí)現(xiàn)HTTP請(qǐng)求限流示例

    Go如何實(shí)現(xiàn)HTTP請(qǐng)求限流示例

    本篇文章主要介紹了Go如何實(shí)現(xiàn)HTTP請(qǐng)求限流示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 使用自定義錯(cuò)誤碼攔截grpc內(nèi)部狀態(tài)碼問(wèn)題

    使用自定義錯(cuò)誤碼攔截grpc內(nèi)部狀態(tài)碼問(wèn)題

    這篇文章主要介紹了使用自定義錯(cuò)誤碼攔截grpc內(nèi)部狀態(tài)碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • golang通過(guò)反射設(shè)置結(jié)構(gòu)體變量的值

    golang通過(guò)反射設(shè)置結(jié)構(gòu)體變量的值

    這篇文章主要介紹了golang通過(guò)反射設(shè)置結(jié)構(gòu)體變量的值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04

最新評(píng)論

新建县| 潜山县| 太和县| 长顺县| 宝清县| 镇宁| 鹰潭市| 康乐县| 望谟县| 清流县| 长宁区| 绵阳市| 灵寿县| 抚松县| 沾化县| 霍城县| 五大连池市| 阜阳市| 巨野县| 徐闻县| 南充市| 梧州市| 思南县| 大同市| 武功县| 正镶白旗| 安达市| 桦川县| 永靖县| 凤凰县| 红原县| 上思县| 东港市| 宜州市| 连州市| 舟山市| 扎兰屯市| 赫章县| 体育| 巫山县| 新河县|