五、Go数组和结构体

五、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;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,823评论 2 9
  • 1.C和C++的区别?C++的特性?面向对象编程的好处? 答:c++在c的基础上增添类,C是一个结构化语言,它的重...
    杰伦哎呦哎呦阅读 9,581评论 0 45
  • 小美是个聪明、美丽又善良的姑娘,她恋爱了。男友杰森是高中同学,两人都是班里的学霸。不过,由于学业紧张,无暇顾及感情...
    茶宴阅读 669评论 1 4
  • 高楼登远,春雨十帘衔柳色尘烟。 莺舞燕回,曾是雏燕今复息归。 换了白发,可笑应羞簪上黛花。 春去秋来,白马无歇宦海无涯。
    浅墨昔年阅读 298评论 0 1
  • 最近在朋友圈看到几位学长分享了“今天背单词XXX”“运动第XXX天”等信息,一句“老夫聊发少年狂”瞬间跃入脑海,和...
    岚陌寻阅读 467评论 2 2