五抑淫、Go的數(shù)組和結(jié)構(gòu)體
1.數(shù)組
數(shù)組是具有相同唯一類型的一組已編號且長度固定的數(shù)據(jù)項序列,這種類型可以是任意的原始類型例如整形姥闪、字符串或者自定義類型始苇。
聲明數(shù)組
var balance [10] float32
初始化數(shù)組
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
//或者用...表示不限制大小,根據(jù)后面的{}的元素個數(shù)自動設(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ù)組大锌鹪:
void myFunction(param [10]int)
{
// dosomething
}
方式二
形參未設(shè)定數(shù)組大写呤健:
void myFunction(param []int)
{
// dosomething
}
2.結(jié)構(gòu)體
Go 語言中數(shù)組可以存儲同一類型的數(shù)據(jù),但在結(jié)構(gòu)體中我們可以為不同項定義不同的數(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)建一個新的結(jié)構(gòu)體
fmt.Println(Books{"Go 語言", "www.runoob.com", "Go 語言教程", 6495407})
// 也可以使用 key => value 格式
fmt.Println(Books{title: "Go 語言", author: "www.runoob.com", subject: "Go 語言教程", book_id: 6495407})
// 忽略的字段為 0 或 空
fmt.Println(Books{title: "Go 語言", author: "www.runoob.com"})
}
訪問結(jié)構(gòu)體成員:
使用結(jié)構(gòu)體.成員名
訪問。
如Books1.title
輸出Go 語言
結(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);
}
//可以輸出每個結(jié)構(gòu)體的title及其取值哺窄。
結(jié)構(gòu)體指針:
可以像其他指針變量一樣定義結(jié)構(gòu)體的指針變量。
var struct_pointer *Books
以上定義的指針變量可以存儲結(jié)構(gòu)體變量的地址。查看結(jié)構(gòu)體變量地址萌业,可以將 & 符號放置于結(jié)構(gòu)體變量前:
struct_pointer = &Book1;
使用結(jié)構(gòu)體指針訪問結(jié)構(gòu)體成員坷襟,使用 "." 操作符:
struct_pointer.title;