美文网首页
五、Go数组和结构体

五、Go数组和结构体

作者: 屉屉 | 来源:发表于2018-11-16 21:43 被阅读0次

    五、Go的数组和结构体

    1.数组

    数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。

    声明数组

    var balance [10] float32
    

    初始化数组

    var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
    
    //或者用...表示不限制大小,根据后面的{}的元素个数自动设置
    
    var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
    
    

    多维数组

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

    向函数传递数组

    方式一

    形参设定数组大小:

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

    方式二

    形参未设定数组大小:

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

    2.结构体

    Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。

    结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。

    声明结构体:

    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() {
    
        // 创建一个新的结构体
        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"})
    }
    

    访问结构体成员:

    使用结构体.成员名访问。

    Books1.title 输出Go 语言

    结构体作为函数参数:

    像其他数据类型一样将结构体类型作为参数传递给函数。

    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);
    }
    //可以输出每个结构体的title及其取值。
    

    结构体指针:

    可以像其他指针变量一样定义结构体的指针变量。

    var struct_pointer *Books
    

    以上定义的指针变量可以存储结构体变量的地址。查看结构体变量地址,可以将 & 符号放置于结构体变量前:

    struct_pointer = &Book1;
    

    使用结构体指针访问结构体成员,使用 "." 操作符:

    struct_pointer.title;
    

    相关文章

      网友评论

          本文标题:五、Go数组和结构体

          本文链接:https://www.haomeiwen.com/subject/mlyvfqtx.html