go语言语法练习实例

package main
import(
	"fmt"
)

//定义grandpa结构体
type grandpa struct{
	g_name string
	g_age int
}

//定义parents结构体
type parents struct{
	g grandpa//继承grandpa
	name string
	age *int //int指针类型
}

//定义son结构体
type son struct{
	p parents//继承parents
	son_name string
	like map[string]parents //map类型 值为parents类型
	sli []*parents //切片类型 元素为parents指针类型
	speek func (int, int) //函数类型
}

//say函数
func say(n int, b int){
	c:=n+b
	fmt.Println("speek输出结果是",c)
}

func main(){

	//申明一个son类型的结构体
	var all son

	//变量
	n:=15

	//给all.p赋值
	all.p = parents{
	 	g:grandpa{
	 		g_name:"爷爷",
	 		g_age:85},
	 	name : "爸爸",
	 	age : &n,//赋地址
	 	}

	//给all.son_name赋值
	all.son_name = "儿子" 


	//给all.like赋值
	all.like = make(map[string]parents)
	all.like["one"] = parents{g:grandpa{g_name : "爷爷喜欢1",g_age:1},name:"爸爸喜欢1",age:&n}
	all.like["two"] = parents{g:grandpa{g_name : "爷爷喜欢2",g_age:2},name:"爸爸喜欢2",age:&n}

	//给all.sli赋值
	all.sli = make([]*parents,0)
	parent_one:=&parents{g:grandpa{g_name : "爷爷切片1",g_age:1},name:"爸爸切片1",age:&n}
	parent_two:=&parents{g:grandpa{g_name : "爷爷切片2",g_age:1},name:"爸爸切片2",age:&n}
	all.sli=append(all.sli,parent_one,parent_two)

	//给speek
	all.speek = say//函数类型

	//输出爷爷信息
	fmt.Println("爷爷名字:",all.p.g.g_name)
	fmt.Println("爷爷年龄:",all.p.g.g_age)

	//输出爸爸信息
	fmt.Println("爸爸继承:",all.p.g)
	fmt.Println("爸爸名字:",all.p.name)
	fmt.Println("爸爸年龄:",*all.p.age)

	//输出儿子信息
	fmt.Println("儿子继承:",all.p)
	fmt.Println("儿子名字:",all.son_name)

	//输出like信息
	for k,p :=range all.like{
		fmt.Println("儿子喜欢:",k,p)
		fmt.Println("儿子喜欢的爸爸:",k,p.name)
		fmt.Println("儿子喜欢的爷爷:",k,p.g.g_name)
	}

	//数出sli信息
	for i := 0; i < len(all.sli); i++ {
		fmt.Println("儿子切片:",*all.sli[i])//范文指针的值
		fmt.Println("儿子切片爸爸名字:",all.sli[i].name)//访问不是指针的值
		fmt.Println("儿子切片爸爸年龄:",*all.sli[i].age)
		fmt.Println("儿子切片爷爷名字:",all.sli[i].g.g_name)
		fmt.Println("儿子切片爷爷年龄:",all.sli[i].g.g_age)
	}

	//使用sppek
	all.speek(1,2)

}

 

 

你可能感兴趣的:(Go学习篇)