27、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)

注意:非本地类型不能定义方法
代码
/**
* @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、Type关键字的更多相关文章
- Scala-Unit6-final/type关键字、样例类&样例对象
一.关键字 1.final关键字 用final修饰的类:不能被继承 用final修饰的方法:不能被重写 注意:(1)在Scala中变量不需要用final修饰,因为val与var已经限制了变量是否可变 ...
- scala类型系统 type关键字
和c里的type有点像. scala里的类型,除了在定义class,trait,object时会产生类型,还可以通过type关键字来声明类型. type相当于声明一个类型别名: scala> t ...
- golang中type关键字使用
type关键字使用 type是go语法里的重要而且常用的关键字,type绝不只是对应于C/C++中的typedef.搞清楚type的使用,就容易理解go语言中的核心概念struct.interface ...
- Delphi常用关键字用法详解
本文详细介绍了Delphi中常用的各个关键字名称及用法,供大家在编程过程中借鉴参考之用.详情如下: absolute: ? 1 2 3 4 5 6 7 8 9 10 //它使得你能够创建一个新变量, ...
- Go -- type 和断言 interface{}转换
摘要 类型转换在程序设计中都是不可避免的问题.当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关 注这方面的问题.但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编 ...
- Delphi 关键字详解[整理于 "橙子" 的帖子]
absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var Str: ]; StrLen: Byte absolute Str; //这个声明指定了变量 ...
- 【转】Delphi 关键字详解
absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var Str: string[32]; StrLen: Byte absolute Str; //这个声明 ...
- TYPES、DATA、TYPE、LIKE、CONSTANTS、STATICS、TABLES
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- golang type 和断言 interface{}转换
摘要 类型转换在程序设计中都是不可避免的问题.当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关 注这方面的问题.但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编 ...
- Oracle使用%type类型的变量输出结果
使用%type关键字可以声明一个与指定列名称相同的数据类型,他通常紧跟在指定列名的后面. 使用%type的2个好处: 1.用户不必查看表中各个列的数据类型,就可以确保所定义的变量能够存储检索的数据. ...
随机推荐
- 关于ChatGPT的一些闲扯淡(1)
这篇写的有点迟了,前者子ChatGPT正火的时候,懒病发作一直拖延.今天对ChatGPT做一个简单的讨论,也是把学习的心得和大家分享一下. 首先什么是GPT,英文全称是Generative Pretr ...
- Graphviz入门
Graphviz可以用于状态机图的绘制 要绘制一张状态图,我们需要两个图形元素 结点,边 结点和边都有自己的属性 结点可以是圆.矩形.填充 边有粗细
- RocketMQ 系列(三) 集成 SpringBoot
RocketMQ 系列(三) 集成 SpringBoot 前两篇文章介绍了 RocketMQ 基本概念与搭建,现在以它与 SpringBoot 的结合来介绍其基本的用法. RocketMQ系列(一) ...
- 解决Eclipse中启动Tomcat报unable to start within 45 seconds问题
启动项目的时候报Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server ...
- WPF动画入门教程
Windows Presentation Foundation (WPF)是一种用于创建Windows客户端应用程序的UI框架.它让我们能够创建丰富的图形界面,包括各种各样的动画效果.接下来,我们将介 ...
- FastGPT 接入飞书(不用写一行代码)
FastGPT V4 版本已经发布,可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景,例如联网谷歌搜索,操作数据库等等,功能非常强大,还没用过的同学赶紧去试试吧. 飞书相比同类产品算是 ...
- 我封装的一个REPR轮子 Biwen.QuickApi
Biwen.QuickApi 项目介绍 [QuickApi("hello/world")] public class MyApi : BaseQuickApi<Req,Rsp ...
- ASP.NET 6启动时自动创建MongoDB索引
大家好,我是Edison. 最近,在使用MongoDB时,碰到这样的一个需求:针对某个Collection手动在开发环境创建了索引,但在测试环境和生产环境不想再手动操作了,于是就想着通过代码的方式在A ...
- P8684 [蓝桥杯 2019 省 B] 灵能传输 题解
P8684 [蓝桥杯 2019 省 B] 灵能传输 题解 Part 1 提示 题目传送门 欢迎大家指出错误并私信这个蒟蒻 欢迎大家在下方评论区写出自己的疑问(记得 @ 这个蒟蒻) Part 2 更新日 ...
- umich cv-4-2 经典卷积网络架构
这节课中主要讨论了卷积神经网络的发展历史以及几种经典结构是如何构建的 卷积网络经典结构 AlexNet VGG GoogleNet Residual Network AlexNet 在2012年的时候 ...