ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

go的interface接口使用案例

2022-03-06 12:01:19  阅读:107  来源: 互联网

标签:map string value interface 接口 go id name


点击查看代码
package main

import (
	"fmt"
	"math/rand"
)

func testInterface() {
	var a interface {}  // interface可以存储任何类型的值
	fmt.Printf("00>> a=%#v %T\n",a,a)
	if a==nil{
		fmt.Println("01>> a is nil")
	}else{
		fmt.Println("01>> a is not nil")
	}
	var b int =100
	var c float32=3.2
	var d string="hello"
	a = b
	fmt.Printf("02>> a=%#v %T\n",a,a)
	fmt.Printf("02>> b=%#v %T\n",b,b)

	a =c
	fmt.Printf("03>> a=%#v %T\n",a,a)
	fmt.Printf("03>> c=%#v %T\n",c,c)

	a =d
	fmt.Printf("04>> a=%v %T\n",a,a)
	fmt.Printf("04>> d=%v %T\n",d,d)
}
 

func studentStore() {
	var stuMap map[int]map[string]interface {}
	stuMap = make(map[int]map[string]interface{},16)
	//插入学生信息 id=1,姓名=stu01,分数=78.5,年龄=14
	var id =1
	var name ="stu01"
	var score =78.2
	var age = 15
	value,ok := stuMap[id]
	if !ok{
		value = make(map[string]interface{},8)
	}
	value["name"] = name
	value["id"] = id
	value["score"] = score
	value["age"] = age
	stuMap[id] = value
	fmt.Printf("stumap:%#v\n",stuMap)
	
	for i:=0; i<10; i++{
		value,ok := stuMap[i]
		fmt.Printf("02 i= %d>> ok=%t value=%v \n",i, ok , value)

		if !ok{
			value = make(map[string]interface{},8)
		}
		value["name"] = fmt.Sprintf("stu%d",i)
		value["id"] = i
		value["score"] = rand.Float32()*100.0
		value["age"] = rand.Intn(100)
		stuMap[i] = value
	}
	fmt.Println()
	for k,v := range stuMap{
		fmt.Printf("id=%d stu_infoMAp: %#v\n",k,v)
	}
}

func main() {
	testInterface()
	//studentStore()
}

testInterface()输出:

点击查看代码
00>> a=<nil> <nil>
01>> a is nil
02>> a=100 int
02>> b=100 int
03>> a=3.2 float32
03>> c=3.2 float32
04>> a=hello string
04>> d=hello string

studentStore()输出:

点击查看代码
stumap:map[int]map[string]interface {}{1:map[string]interface {}{"age":15, "id":1, "name":"stu01", "score":78.2}}
02 i= 0>> ok=false value=map[]
02 i= 1>> ok=true value=map[age:15 id:1 name:stu01 score:78.2]
02 i= 2>> ok=false value=map[]
02 i= 3>> ok=false value=map[]
02 i= 4>> ok=false value=map[]
02 i= 5>> ok=false value=map[]
02 i= 6>> ok=false value=map[]
02 i= 7>> ok=false value=map[]
02 i= 8>> ok=false value=map[]
02 i= 9>> ok=false value=map[]

id=5 stu_infoMAp: map[string]interface {}{"age":11, "id":5, "name":"stu5", "score":51.521267}
id=8 stu_infoMAp: map[string]interface {}{"age":45, "id":8, "name":"stu8", "score":28.303415}
id=3 stu_infoMAp: map[string]interface {}{"age":40, "id":3, "name":"stu3", "score":6.563702}
id=6 stu_infoMAp: map[string]interface {}{"age":89, "id":6, "name":"stu6", "score":21.426388}
id=9 stu_infoMAp: map[string]interface {}{"age":6, "id":9, "name":"stu9", "score":67.90846}
id=1 stu_infoMAp: map[string]interface {}{"age":59, "id":1, "name":"stu1", "score":66.45601}
id=0 stu_infoMAp: map[string]interface {}{"age":87, "id":0, "name":"stu0", "score":60.466026}
id=2 stu_infoMAp: map[string]interface {}{"age":18, "id":2, "name":"stu2", "score":42.46375}
id=4 stu_infoMAp: map[string]interface {}{"age":0, "id":4, "name":"stu4", "score":9.696952}
id=7 stu_infoMAp: map[string]interface {}{"age":74, "id":7, "name":"stu7", "score":31.805817}

标签:map,string,value,interface,接口,go,id,name
来源: https://www.cnblogs.com/heris/p/15971242.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有