joken-前端工程师

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::
  404 随笔 :: 39 文章 :: 8 评论 :: 20万 阅读
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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   joken1310  阅读(172)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示