标签: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