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) } |
前端工程师、程序员
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~