码迷,mamicode.com
首页 > 其他好文 > 详细

go struct结构体

时间:2017-08-30 09:50:22      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:str   core   image   bsp   printf   数据   第一个   highlight   .com   

struct结构体

  • 用来自定义复杂数据结构
  • struct里面可以包含多个字段(属性)
  • struct类型可以定义方法,注意和函数的区分
  • struct类型是值类型
  • struct类型可以嵌套
  • Go语言没有class类型,只有struct类型

 

1、struct 声明

type 标识符 struct {
       field1 type
       field2 type
}

样例:

type Student struct {
       Name string
       Age int
       Score int
}

 

2、struct 中字段访问:和其他语言一样,使用点

var stu Student

stu.Name = “tony”
stu.Age = 18
stu.Score=20

fmt.Printf(“name=%s age=%d score=%d”, stu.Name, stu.Age, stu.Score)

 

3、struct定义的三种形式:

  • a. var stu Student
  • b. var stu *Student = new(Student)
  • c. var stu *Student = &Student{}

1)其中b和c返回的都是指向结构体的指针,访问形式如下:

stu.Name、stu.Age和stu.Score或者 (*stu).Name、(*stu).Age等

 

4. struct的内存布局:struct中的所有字段在内存是连续的,布局如下:

type Rect1 struct { Min, Max Point }

type Rect2 struct { Min, Max *Point }

技术分享

 

package main

import "fmt"

type Student struct {
	Name  string
	Age   int
	score float32
}

func main() {
	var stu Student

	stu.Age = 18
	stu.Name = "hua"
	stu.score = 80

	var stu1 *Student = &Student{
		Age:  20,
		Name: "hua",
	}

	var stu3 = Student{
		Age:  20,
		Name: "hua",
	}
        fmt.Println(stu)
	fmt.Println(stu1.Name)
	fmt.Println(stu3)
	fmt.Printf("Name:%p\n", &stu.Name)
	fmt.Printf("Age: %p\n", &stu.Age)
	fmt.Printf("score:%p\n", &stu.score)
}

 

 

5、链表定义

每个节点包含下一个节点的地址,这样把所有的节点串起来了,通常把 链表中的第一个节点叫做链表头。

type Student struct {
       Name string
       Next* Student
}

样例一:

package main

import (
	"fmt"
)

type Student struct {
	Name  string
	Age   int
	Score float32
	next  *Student
}


func main() {
	var head Student
	head.Name = "hua"
	head.Age = 18
	head.Score = 100

	var stu1 Student
	stu1.Name = "stu1"
	stu1.Age = 23
	stu1.Score = 23

	head.next = &stu1
	var p *Student = &head
	for p != nil {
		fmt.Println(*p)
		p = p.next
	}
	fmt.Println()
}

技术分享

 

6、双链表定义

如果有两个指针分别指向前一个节点和后一个节点,我们叫做双链表。

type Student struct {
       Name string
       Next* Student
       Prev* Student
}

 

go struct结构体

标签:str   core   image   bsp   printf   数据   第一个   highlight   .com   

原文地址:http://www.cnblogs.com/shhnwangjian/p/7451355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!