ICode9

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

GO语言自学_013_接口

2022-09-06 21:02:42  阅读:179  来源: 互联网

标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

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

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

ICode9版权所有