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

浙公网安备 33010602011771号