joken-前端工程师

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::
package main
import "fmt"
import "encoding/json"

type Human struct{
	Name string
	Home string
	Like string
}

type Info struct{
	One string
	Two string
}
type TestInt int  //自定义数据类型,比如自定义的TestInt所代表的类型是int

type Jo struct{ //自定义数据类型,比如自定义的Jo所代表的类型是struct
	Human //复合共同部分
	Father string
	Mather string
	ArrInfo []Info 
	MyInfo Info
}

func (h Human) SayName(){
	print(h.Name)
}

type TestOne interface{
	SayName()
}  //interface{}是一种比较通用的类型,可以接受任何类型的数据

func main(){
	var abcd []Human
	for i:=0; i<6;i++{
		abcd=append(abcd,Human{
			Name:"sdklfjsdf",
			Home:"sdkljfds",
			Like:"sdlkfsdljf",
		})
	}
	print(abcd)
	var ae interface{}
	ae=abcd
	print(ae)
	testTypeA()

}

func testTypeA(){
	var i TestOne //创建变量需要声明类型,类型可以自定义也可以go语言提供的基本类型
	var b Human
	b.Name="slkdjfsjd"
	b.Home="slkdjfds"
	b.Like="slkdfjsdjf"
	i=b   //interface{} i可以接受任何数据类型,所以这里可以接受b的数据
	i.SayName()
	print(i)
	var jo Jo
	jo.Father="slkdjfsd"
	jo.Mather="skldfjsdj"
	jo.Human=Human{  //对共同部分的赋值需要这样写
		Name:"skldjfsdf",
		Home:"slkdjfds",
		Like:"slkdjfsjdf",
	}
	jo.Name="4654645654"  //这里可以直接引用复用的对象,当然也可以用以上的方式赋值
	jo.ArrInfo=[]Info{   //值得注意的是对变量赋值,所赋的值需要先声明类型再定义值
		{One:"slkdjfsdf",Two:"jskdljfs"},
		{One:"s46465465lkdjfsdf",Two:"jskdljfs"},
	}
	jo.MyInfo=Info{
		One:"sdfsdjfkl",
		Two:"sdlkfjsdfj",
	}
	json,_:=json.Marshal(jo)
	print(string(json))
	var aint TestInt
	aint=46465
	print(aint)
	amap:=make(map[string]interface{}) //map的值不一定是固定某种类型的数据,所以用interface{}
	amap["Father"]=jo.Father
	amap["Mather"]=jo.Mather
	amap["Name"]=jo.Name
	amap["ArrInfo"]=jo.ArrInfo
	amap["MyInfo"]=jo.MyInfo
	print(amap)
}

func print(a interface{}){
	fmt.Println(a)
}

  

posted on 2017-10-10 21:29  joken1310  阅读(166)  评论(0编辑  收藏  举报