标签:int 值为 fmt 数据类型 Println 013 GO 自学 interface
代码
package main
import "fmt"
/*
go语言中,有专门的关键字表示接口:interface
interface不仅可以处理多态,还可以接收任意的数据类型。
*/
func main() {
// 定义三个接口
var i, j, k interface{}
names := []string{"Duke", "Lily"}
age := 20
str := "Hello"
i = names
j = age
k = str
fmt.Println("i代表切片数组:", i)
fmt.Println("j代表数字:", j)
fmt.Println("k代表字符串:", k)
/*
问题:我们只知道i,j,k都是interface,但不知道代表什么数据类型。
*/
// 现在k是一个字符串类型,判断k是不是int类型(不太常用)
fmt.Println("案例1")
value, ok := k.(int)
if ok {
fmt.Println("k 是int数据类型,值为:", value)
} else {
fmt.Println("k不是int")
}
/*
常用场景:把interface当成一个函数参数,switch判断不同数据类型
根据不同类型,做相应逻辑处理
*/
// 创建一个具有三个接口的类型的切片
fmt.Println("案例2")
arr := make([]interface{}, 4)
arr[0] = 1
arr[1] = "Hello"
arr[2] = true
arr[3] = 3.11112323
for _, value := range arr {
// 获取当前接口的真正数据类型
switch v := value.(type) {
case int:
fmt.Printf("当前数据类型为int,值为:%d\n", v)
break
case bool:
fmt.Printf("当前数据类型为bool,值为:%v\n", v)
break
case string:
fmt.Printf("当前数据类型为string,值为:%s\n", v)
break
default:
fmt.Println("数据类型不合理。")
}
}
}
结果
ASUS@DESKTOP-NFP9SLA MINGW64 /c/gowork/src
$ go run 012_interface.go
i代表切片数组: [Duke Lily]
j代表数字: 20
k代表字符串: Hello
案例1
k不是int
案例2
当前数据类型为int,值为:1
当前数据类型为string,值为:Hello
当前数据类型为bool,值为:true
数据类型不合理。
标签:int,值为,fmt,数据类型,Println,013,GO,自学,interface 来源: https://www.cnblogs.com/cloucodeforfun/p/16663259.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。