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) }
前端工程师、程序员