go的type关键字

这篇具有很好参考价值的文章主要介绍了go的type关键字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 Go 语言中,type 关键字用于定义自定义数据类型(类型别名、结构体、接口等),以及获取某个变量的类型信息。type 关键字有多种用法,下面将详细解释这些用法:

1. 自定义数据类型
使用 type 关键字可以定义自定义的数据类型,包括类型别名、结构体、接口等。例如:

// 定义类型别名
type MyInt int

// 定义结构体
type Person struct {
    Name string
    Age  int
}

// 定义接口
type Shape interface {
    Area() float64
}

2. 获取变量的类型信息
使用 type 关键字可以获取一个变量的类型信息。在 Go 语言中,reflect 包提供了更详细的反射机制,可以用于获取变量的类型、值等更多信息。以下是一个简单的示例:

package main

import (
	"fmt"
	"reflect"
)

func main() {
	num := 42
	str := "Hello"

	// 使用 type 获取变量的类型信息
	fmt.Println("Type of num:", reflect.TypeOf(num))
	fmt.Println("Type of str:", reflect.TypeOf(str))
}

3. 类型断言
type 关键字还可以与类型断言一起使用,用于判断一个接口类型变量是否实现了特定的接口。例如:

package main

import (
	"fmt"
)

type Shape interface {
	Area() float64
}

type Circle struct {
	Radius float64
}

func (c Circle) Area() float64 {
	return 3.14 * c.Radius * c.Radius
}

func main() {
	var s Shape
	circle := Circle{Radius: 2.5}
	s = circle

	// 类型断言判断是否实现了特定接口
	if _, ok := s.(Shape); ok {
		fmt.Println("s implements Shape interface")
	} else {
		fmt.Println("s doesn't implement Shape interface")
	}
}

在上面的示例中,使用 s.(Shape) 进行类型断言,判断变量 s 是否实现了 Shape 接口。

4. 类型判断与类型选择
type 关键字还可以与 switch 语句一起使用,进行类型判断和类型选择。这在处理接口类型时非常有用。以下是一个简单示例:

package main

import (
	"fmt"
)

type Shape interface {
	Area() float64
}

type Circle struct {
	Radius float64
}

type Rectangle struct {
	Width  float64
	Height float64
}

func (c Circle) Area() float64 {
	return 3.14 * c.Radius * c.Radius
}

func (r Rectangle) Area() float64 {
	return r.Width * r.Height
}

func main() {
	shapes := []Shape{
		Circle{Radius: 2.5},
		Rectangle{Width: 3, Height: 4},
		Circle{Radius: 4},
	}

	for _, shape := range shapes {
		switch s := shape.(type) {
		case Circle:
			fmt.Printf("Circle: Area = %.2f\n", s.Area())
		case Rectangle:
			fmt.Printf("Rectangle: Area = %.2f\n", s.Area())
		default:
			fmt.Println("Unknown shape")
		}
	}
}

在上面的示例中,通过 shape.(type) 进行类型选择,判断具体是哪种类型的形状,并分别调用其 Area() 方法。

5. 类型零值
type 关键字还可以用于定义类型的零值。在 Go 语言中,自定义类型的零值是该类型的初始值。例如:

package main

import (
	"fmt"
)

type Point struct {
	X int
	Y int
}

func main() {
	var p Point // Point 的零值 {0, 0}
	fmt.Println("Point:", p)
}

在上述示例中,var p Point 创建了一个 Point 类型的变量,其初始值为 {0, 0}。文章来源地址https://www.toymoban.com/news/detail-638322.html

到了这里,关于go的type关键字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [开发语言][c++]:Static关键字和全局变量

    写在前面: 如果您只是想回顾或了解一下static和全局变量的异同点,那么下面的总结将满足您的需求。 如果您是一位初学者或对二者的使用模棱两可,建议您读完该篇文章,相信这一篇将解答完您对于static以及全局变量的所有疑惑。 如有问题或建议欢迎评论 or 私信

    2024年01月20日
    浏览(58)
  • typescript基础之关键字type

    TypeScript的type是一个,用来定义一个类型别名https://www.typescripttutorial.net/typescript-tutorial/typescript-types/。类型别名可以给一个已有的类型起一个新的名字,或者组合多个类型成为一个新的类型。例如: // 给string类型起一个别名叫做Name // 组合string和number类型成为一个新的

    2024年02月14日
    浏览(35)
  • TypeScript 中的 type 关键字有什么用?

    创建类型别名 在 TypeScript 中,type 用于创建类型别名(Type Alias)。类型别名可以给一个类型起一个新的名字,使代码更具可读性和可维护性。 类型别名可以用于定义各种类型,包括基本类型、复合类型和自定义类型。通过 type ,可以为复杂的类型定义提供一个

    2024年02月08日
    浏览(40)
  • 初始Go语言2【标识符与关键字,操作符与表达式,变量、常量、字面量,变量作用域,注释与godoc】

      go变量、常量、自定义类型、包、函数的命名方式必须遵循以下规则: 首字符可以是任意Unicode字符或下划线。 首字符之外的部分可以是Unicode字符、下划线或数字。 名字的长度无限制。 理论上名字里可以有汉字,甚至可以全是汉字,但实际中不要这么做。 Go语言

    2023年04月09日
    浏览(55)
  • 01-抒写代码之诗:Golang 关键字的文学探索

    📃个人主页:个人主页 🔥系列专栏:Golang基础 💬Go(又称Golang)是由Google开发的开源编程语言。它结合了静态类型的安全性和动态语言的灵活性,拥有高效的并发编程能力和简洁的语法。Go被设计用于构建可扩展、高性能的软件系统,具有优秀的内存管理和快速的编译速度

    2024年02月08日
    浏览(39)
  • Go 自学:defer关键字

    我们可以使用defer延迟代码的执行,相当于我们把代码放入一个stack中,遵循last in first out的原则输出代码。 代码输出为: Hello 43210Two One World

    2024年02月10日
    浏览(69)
  • Go,从命名开始!Go的关键字和标识符全列表手册和代码示例!

    关注TechLeadCloud,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。 (Keywords)是编程

    2024年02月10日
    浏览(58)
  • 【C语言】for 关键字

    🚩WRITE IN FRONT🚩    🔎介绍:\\\"謓泽\\\"正在路上朝着\\\"攻城狮\\\"方向\\\"前进四\\\"🔎 🏅荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星TOP100|TOP63、阿里云专家博主、掘金优秀创作者、全网粉丝量5w+、全网访问量70w+🏅 🆔本文章内容由 謓泽 原创 如需相关转载

    2023年04月17日
    浏览(39)
  • C语言volatile关键字

    在C语言中, volatile 是一个类型修饰符,用于告诉编译器对象的值可能会在编译器无法检测到的情况下被改变。这通常发生在以下两种情况: 硬件的输入/输出操作,例如一个设备寄存器的读取或写入。 共享内存的并行程序,其中一个线程修改了一个内存位置,而另一个线程

    2024年02月07日
    浏览(54)
  • Json Schema介绍 和 .net 下的实践 - 基于Lateapexearlyspeed.Json.Schema - 基础1 - type关键字和string类型

    本系列旨在介绍Json Schema的常见用法,以及.net实现库Lateapexearlyspeed.Json.Schema的使用 这篇文章将介绍Json Schema中的type,和string类型的常见验证功能。用例基于.net的LateApexEarlySpeed.Json.Schema nuget package。这是新创建的一个 Json Schema在.net下的高性能实现库。 就像其他各种Sch

    2024年02月02日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包