五、Go數(shù)組和結(jié)構(gòu)體

五、Go的數(shù)組和結(jié)構(gòu)體

1.數(shù)組

數(shù)組是具有相同唯一類型的一組已編號(hào)且長(zhǎng)度固定的數(shù)據(jù)項(xiàng)序列,這種類型可以是任意的原始類型例如整形、字符串或者自定義類型。

聲明數(shù)組

var balance [10] float32

初始化數(shù)組

var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

//或者用...表示不限制大小,根據(jù)后面的{}的元素個(gè)數(shù)自動(dòng)設(shè)置

var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

多維數(shù)組

var threedim [5][10][4]int

向函數(shù)傳遞數(shù)組

方式一

形參設(shè)定數(shù)組大?。?/p>

void myFunction(param [10]int)
{
// dosomething
}

方式二

形參未設(shè)定數(shù)組大?。?/p>

void myFunction(param []int)
{
// dosomething
}

2.結(jié)構(gòu)體

Go 語(yǔ)言中數(shù)組可以存儲(chǔ)同一類型的數(shù)據(jù),但在結(jié)構(gòu)體中我們可以為不同項(xiàng)定義不同的數(shù)據(jù)類型。

結(jié)構(gòu)體是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合。

聲明結(jié)構(gòu)體:

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

如:

package main
import "fmt"

type Books struct {
   title string
   author string
   subject string
   book_id int
}

func main() {

    // 創(chuàng)建一個(gè)新的結(jié)構(gòu)體
    fmt.Println(Books{"Go 語(yǔ)言", "www.runoob.com", "Go 語(yǔ)言教程", 6495407})
    
    // 也可以使用 key => value 格式
    fmt.Println(Books{title: "Go 語(yǔ)言", author: "www.runoob.com", subject: "Go 語(yǔ)言教程", book_id: 6495407})
    
    // 忽略的字段為 0 或 空
   fmt.Println(Books{title: "Go 語(yǔ)言", author: "www.runoob.com"})
}

訪問結(jié)構(gòu)體成員:

使用結(jié)構(gòu)體.成員名訪問。

Books1.title 輸出Go 語(yǔ)言

結(jié)構(gòu)體作為函數(shù)參數(shù):

像其他數(shù)據(jù)類型一樣將結(jié)構(gòu)體類型作為參數(shù)傳遞給函數(shù)。

func printBook( book Books ) {
   fmt.Printf( "Book title : %s\n", book.title);
   fmt.Printf( "Book author : %s\n", book.author);
   fmt.Printf( "Book subject : %s\n", book.subject);
   fmt.Printf( "Book book_id : %d\n", book.book_id);
}
//可以輸出每個(gè)結(jié)構(gòu)體的title及其取值。

結(jié)構(gòu)體指針:

可以像其他指針變量一樣定義結(jié)構(gòu)體的指針變量。

var struct_pointer *Books

以上定義的指針變量可以存儲(chǔ)結(jié)構(gòu)體變量的地址。查看結(jié)構(gòu)體變量地址,可以將 & 符號(hào)放置于結(jié)構(gòu)體變量前:

struct_pointer = &Book1;

使用結(jié)構(gòu)體指針訪問結(jié)構(gòu)體成員,使用 "." 操作符:

struct_pointer.title;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡(jiǎn)書還為我保存起的...
    Jenaral閱讀 2,830評(píng)論 2 9
  • 1.C和C++的區(qū)別?C++的特性?面向?qū)ο缶幊痰暮锰帲?答:c++在c的基礎(chǔ)上增添類,C是一個(gè)結(jié)構(gòu)化語(yǔ)言,它的重...
    杰倫哎呦哎呦閱讀 9,619評(píng)論 0 45
  • 小美是個(gè)聰明、美麗又善良的姑娘,她戀愛了。男友杰森是高中同學(xué),兩人都是班里的學(xué)霸。不過,由于學(xué)業(yè)緊張,無(wú)暇顧及感情...
    茶宴閱讀 670評(píng)論 1 4
  • 高樓登遠(yuǎn),春雨十簾銜柳色塵煙。 鶯舞燕回,曾是雛燕今復(fù)息歸。 換了白發(fā),可笑應(yīng)羞簪上黛花。 春去秋來,白馬無(wú)歇宦海無(wú)涯。
    淺墨昔年閱讀 298評(píng)論 0 1
  • 最近在朋友圈看到幾位學(xué)長(zhǎng)分享了“今天背單詞XXX”“運(yùn)動(dòng)第XXX天”等信息,一句“老夫聊發(fā)少年狂”瞬間躍入腦海,和...
    嵐陌尋閱讀 469評(píng)論 2 2