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关键字的更多相关文章

  1. Scala-Unit6-final/type关键字、样例类&样例对象

    一.关键字 1.final关键字 用final修饰的类:不能被继承 用final修饰的方法:不能被重写 注意:(1)在Scala中变量不需要用final修饰,因为val与var已经限制了变量是否可变 ...

  2. scala类型系统 type关键字

    和c里的type有点像. scala里的类型,除了在定义class,trait,object时会产生类型,还可以通过type关键字来声明类型. type相当于声明一个类型别名: scala> t ...

  3. golang中type关键字使用

    type关键字使用 type是go语法里的重要而且常用的关键字,type绝不只是对应于C/C++中的typedef.搞清楚type的使用,就容易理解go语言中的核心概念struct.interface ...

  4. Delphi常用关键字用法详解

    本文详细介绍了Delphi中常用的各个关键字名称及用法,供大家在编程过程中借鉴参考之用.详情如下: absolute: ? 1 2 3 4 5 6 7 8 9 10 //它使得你能够创建一个新变量, ...

  5. Go -- type 和断言 interface{}转换

    摘要 类型转换在程序设计中都是不可避免的问题.当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关 注这方面的问题.但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编 ...

  6. Delphi 关键字详解[整理于 "橙子" 的帖子]

    absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var   Str: ];   StrLen: Byte absolute Str; //这个声明指定了变量 ...

  7. 【转】Delphi 关键字详解

    absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var Str: string[32]; StrLen: Byte absolute Str; //这个声明 ...

  8. TYPES、DATA、TYPE、LIKE、CONSTANTS、STATICS、TABLES

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. golang type 和断言 interface{}转换

    摘要 类型转换在程序设计中都是不可避免的问题.当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关 注这方面的问题.但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编 ...

  10. Oracle使用%type类型的变量输出结果

    使用%type关键字可以声明一个与指定列名称相同的数据类型,他通常紧跟在指定列名的后面. 使用%type的2个好处: 1.用户不必查看表中各个列的数据类型,就可以确保所定义的变量能够存储检索的数据. ...

随机推荐

  1. Python条件控制和循环语句(if while for )

    Python条件控制和循环语句(if while for ) 条件控制 概念:Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块 结构 1. 顺序结构 ...

  2. 关闭Google"阻止了登录尝试"方法, 其他设备也能登录Gmail等谷歌服务

    首先登录谷歌账户,  访问 https://www.google.com/settings/security/lesssecureapps 把"不够安全的应用的访问权限" 启用打勾 ...

  3. 2.14 PE结构:地址之间的转换

    在可执行文件PE文件结构中,通常我们需要用到地址转换相关知识,PE文件针对地址的规范有三种,其中就包括了VA,RVA,FOA三种,这三种该地址之间的灵活转换也是非常有用的,本节将介绍这些地址范围如何通 ...

  4. Ionic3 与Electron制作桌面应用

    Ionic3 与Electron制作桌面应用 原文:https://medium.com/@LohaniDamodar/lets-make-desktop-application-with-ionic ...

  5. 关于Teamcenter RAC开发如何查看Soa调用情况,已经查看反编译源码

  6. Flask框架——模板、数据库ORM

    文章目录 1 模板 1 重定向 1.1 什么是重定向? 1.2 为什么要有重定向? 1.3 如何使用重定向? 1.3.1 暂时性重定向(代码实例): 1.3.2 永久性重定向(代码实例) 2 jinj ...

  7. Django-rest-framework框架——Xadmin的使用、Book系列多表群操作、RBAC-基于角色的访问控制

    @ 目录 一 过滤Filtering 二 排序 三 分页Pagination 可选分页器 应用 四 异常处理 Exceptions 4.1 使用方式 4.2 案例 4.3 REST framework ...

  8. CPU占用99%

    晚间迁移数据库后,第二天下午来调优,发现CPU占用达到惊人的99%,如下: 分析15:00-16:00期间AWR报告,发现SQL硬解析严重,如下: 每秒硬解析达到69.9次,library hit%太 ...

  9. Python 提取PDF文本和图片

    从PDF中提取内容能帮助我们获取文件中的信息,以便进行进一步的分析和处理.此外,在遇到类似项目时,提取出来的文本或图片也能再次利用.要在Python中通过代码提取PDF文件中的文本和图片,可以使用 S ...

  10. 图形学、02 推导证明 | 任意一点经过透视投影后 z 坐标相对于之前有什么变化

    齐次坐标知识点: \(\begin{bmatrix} x \\ y \\ z \\ 1 \\\end{bmatrix} \Rightarrow\begin{bmatrix} nx \\ ny \\ n ...