首页 > 其他分享 >27、Type关键字

27、Type关键字

时间:2023-09-30 23:44:27浏览次数:40  
标签:27 name int type fmt i2 关键字 var Type

1、是什么?

type是go语法里额重要而且常用的关键字,type绝不只是对应于C/C++中的typeof。搞清楚type的使用,就容易理解Go语言中的核心概念struct、interface、函数等的作用

2、怎么玩?

(1) 定义结构体
// 使用type定义结构体
type Person struct {
	name string
	age  int
}
(2) 定义接口类型
type PersonService interface {
	addPerson(p Person) int
}
(3) 定义新类型
// 定义新类型
type myint int
type mystr string

var i1 myint
	var i2 int
	i1 = 100
	i2 = 200
	fmt.Println(i1)
	fmt.Println(i2)

	var name mystr
	var s1 string
	name = "ly"
	s1 = "张三"
	fmt.Println(name)
	fmt.Println(s1)

	i2 = i1 // cannot use i1 (variable of type myint) as type int in assignment
	// s1 = name
(4) 定义函数类型
type myFun func(int, int) string
func fun1() myFun {
	fun := func(a, b int) string {
		s := strconv.Itoa(a) + strconv.Itoa(b)
		return s
	}
	return fun
}
(5) 类型别名
type myint2 = int // 给 int 类型取别名和int类型是通用的

var a myint2
	var b myint2
	a = 100
	b = 200
	b = i2
	fmt.Printf("%T,%T,%T \n", a, b, i2)

image

注意:非本地类型不能定义方法

代码
/**
 * @author ly (个人博客:https://www.cnblogs.com/ybbit)
 * @date 2023/9/30  23:22
 * @tags 喜欢就去努力的争取
 */
package main

import "fmt"

func main() {
	var s Student
	// s.name // ambiguous selector s.name
	s.People.name = "people"
	s.Person.name = "Person"
	s.People.show()
	s.Person.show()
}

type Person struct {
	name string
}

type People = Person

type Student struct {
	Person
	People
}

func (p Person) show() {
	fmt.Println("show方法执行了", p.name)
}

/**
 * @author ly (个人博客:https://www.cnblogs.com/ybbit)
 * @date 2023/9/30  14:56
 * @tags 喜欢就去努力的争取
 */
package main

import (
	"fmt"
	"strconv"
)

func main() {

	var i1 myint
	var i2 int
	i1 = 100
	i2 = 200
	fmt.Println(i1)
	fmt.Println(i2)

	var name mystr
	var s1 string
	name = "ly"
	s1 = "张三"
	fmt.Println(name)
	fmt.Println(s1)

	// i2 = i1 // cannot use i1 (variable of type myint) as type int in assignment
	// s1 = name

	fmt.Printf("%T,%T,%T,%T \n", i1, i2, name, s1)

	res := fun1()
	fmt.Println(res(10, 20))

	var a myint2
	var b myint2
	a = 100
	b = 200
	b = i2
	fmt.Printf("%T,%T,%T \n", a, b, i2)

}

type myint2 = int // 给 int 类型取别名和int类型是通用的

// 定义函数类型
type myFun func(int, int) string

func fun1() myFun {
	fun := func(a, b int) string {
		s := strconv.Itoa(a) + strconv.Itoa(b)
		return s
	}
	return fun
}

// 定义新类型
type myint int
type mystr string

// 使用type定义结构体
type Person struct {
	name string
	age  int
}

// 定义接口
type PersonService interface {
	add(person Person) int
}

标签:27,name,int,type,fmt,i2,关键字,var,Type
From: https://www.cnblogs.com/ybbit/p/17738072.html

相关文章

  • TypeScript入门到精通——安装 TypeScript
    安装TypeScript一、安装TypeScript安装TypeScript语言最简单的方式是使用npm工具。如果你的计算机中还没有安装Node.js,则需要到Node.js的官网(https://nodejs.org/zh-cn/download)上下载LTS版本的安装包并安装(Windows:https://nodejs.org/dist/v18.18.0/node-v18.18.0-......
  • 9/27
    天早上的英语课进行了课前展示,两位同学上台展示了国庆中秋双节的英文讲解。下午我和cccccw、yblll还有zjh进行了乒乓球简单击打运动,由于zjh此前并未接触过规范的击打训练,所以他击打的球的轨迹十分诡异,无人能接。今天我还跟yblll学会了削球,非常好用。一、动作要点(以右手为例)1、......
  • 2023-2024-1 20211327 信息安全系统设计与实现 学习笔记4(必做)
    学习笔记4文件操作使用系统调用进行文件操作实践过程文件操作1.文件操作级别(1)硬件级别:fdisk:将硬盘、U盘或SDC盘分区mkfs:格式化磁盘分区,为系统做好准备fsck:检查和维修系统碎片整理:压缩文件系统中的文件(2)操作系统内核中的文件系统函数:前缀k表示内核函数(3)系......
  • TypeScript入门到精通——什么是 TypeScript ?
    什么是TypeScript?https://en.wikipedia.org/wiki/TypeScript一、介绍TypeScript TypeScriptisafreeandopen-sourcehigh-levelprogramminglanguagedevelopedbyMicrosoft thataddsstatictypingwithoptionaltype annotationstoJavaScript.Itisdesig......
  • 0.0.0.0与127.0.0.1
    0.0.0.0指的是本机上的所有IPV4地址,该主机上的一个服务监听的地址是0.0.0.0,那么网络上的其他主机通过该服务器的ip才可以访问到该此服务。如果一个服务监听的地址是127.0.0.1,那么其他网络上的其他主机通过该服务器的ip才可以访问到该此服务,因为127.0.0.1代表回环,只用于本机访问本......
  • 2023-2024-1 20231327司宏林 《计算机基础与程序设计》第一周学习总结
    学期(2023-2024-1)20231327《计算机基础与程序设计》第1周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>([https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/13009)这个作......
  • C++的extern关键字在HotSpot VM中的重要应用
    extern关键字有两个用处:(1)extern在C/C++语言中表示函数和全局变量作用范围(可见性)的关键字,这个关键字会告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。(2)在C++中引用C语言中的函数和变量,在包含C语言头文件时,需要使用extern"C"来处理。 1、extern表示函数和变量作......
  • prototype和__proto__之间区别和关系?用最简单的话告诉你
    首先把两句话先抛出来每个构造函数都有一个prototype属性实例对象的__proto__就是它构造函数的prototypefunctionPerson(){this.name='张三'}//我们可以通过Person.prototype.age=19来设置原型中的属性Person.prototype.age=19letp=newPerson()console......
  • java的基本语法、注释、关键字、标识符
    1.1.1Java的基本语法每一种编程语言都有一套自己的语法规范,Java语言也不例外,同样需要遵从一定的语法规范,如代码的书写、标识符的定义、关键字的应用等。因此要学好Java语言,首先需要熟悉它的基本语法。本节将针对Java的基本语法进行详细讲解。Java的基本语法格式编写......
  • Go每日一库之176:filetype(文件类型鉴别)
    filetype(https://github.com/h2non/filetype)是一个Go语言的第三方库,可以根据文件的魔数(magicnumbers)签名来推断文件的类型和MIME类型。它支持多种常见的文件类型,包括图片、视频、音频、文档、压缩包等。它还提供了一些便捷的函数和类型匹配器,可以方便地对文件进行分类和筛选......