标签:str core image bsp printf 数据 第一个 highlight .com
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定义的三种形式:
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 }
标签:str core image bsp printf 数据 第一个 highlight .com
原文地址:http://www.cnblogs.com/shhnwangjian/p/7451355.html