golang中,type是非常重要的关键字,一般常见用法就是定义结构,接口等,但是type还有很多其它的用法,在学习中遇到了以下几种,这点简单总结记录下

  • 定义结构
type Person struct {
name string
age int
} type Mutex struct {}
type OtherMutex Mutex //定义新的类型 func (m *Mutex) Lock(){
fmt.Println("lock")
}
func (m *Mutex) Unlock(){
fmt.Println("lock")
} func main() {
m := &OtherMutex{} //注意,OtherMutex不具有Lock和Unlock方法
m.Lock()
}
  • 定义接口
type Personer interface{
ShowName(s string)
}
  • 类型定义
type Myint int  //定义一个新的类型,

//定义一个类型方法
func (m Myint) showValue() {
fmt.Println("show int", m)
} func main() {
var m Myint = 9 //变量声明
m.showValue()
} 新定义的类型,可以定义方法,
如上例的 showValue()
  • 别名定义

定义和原来一样的类型,就是一个别名alias

type nameMap = map[string]interface{}

func main() {
m :=make(nameMap)
m["name"] = "golang"
fmt.Printf("%v", m)
} 另外别名定义和类型定义有点区别 type A int32 //类型定义,生成新的
type B = int32 //别名定义,仅仅是 alias func main() {
var a A = 333
fmt.Println(a)
var b B = 333
b = B(a) //a,b属于不同的类型,所以这里需要强制转换
fmt.Println(b) }
  • 定义函数类型
type cb func(s string)  // 定义一个函数类型

//对函数类型再定义方法
func (f cb) ServerCb() error{
f("cbb")
fmt.Println("server cb")
return nil
} func main() {
s :=cb(func( s string){
fmt.Println("sss", s)
})
s.ServerCb()
}

其实,这种定义方式,和实现接口的方法定义差不多,感觉这种就是让代码更清晰,如果声明太复杂,不用看上去全是很乱的这种定义。

好了,以上就是 type一些常用的用法。

golang中type常用用法的更多相关文章

  1. golang中type关键字使用

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

  2. Golang中Label的用法

    在Golang中能使用Label的有goto, break, continue.,这篇文章就介绍下Golang中Label使用和注意点. 注意点: Label在continue, break中是可选的 ...

  3. Elasticsearch——Rest API中的常用用法

    本篇翻译的是Elasticsearch官方文档中的一些技巧,是使用Elasticsearch必不可少的必备知识,并且适用于所有的Rest Api. 返回数据格式化 当在Rest请求后面添加?prett ...

  4. Python中type的用法

    目录 描述 语法 用法 type和isinstance Type和Object 描述 python的 type 函数有两个用法,当只有一个参数的时候,返回对象的类型.当有三个参数的时候返回一个类对象. ...

  5. java string中indexOf()常用用法

    Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String st ...

  6. golang 中strconv包用法

    链接:https://studygolang.com/articles/5003 http://www.cnblogs.com/golove/p/3262925.html

  7. Golang中的RegExp正则表达式用法指南

    ------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...

  8. 基础知识 - Golang 中的正则表达式

    ------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...

  9. WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化

    WPF中的常用布局   一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...

随机推荐

  1. RocketMQ(一):推拉消费模型客户端实践

    消息中间件是为解耦生产者和消费者的目的,三大服务点:解耦.异步.削峰. 现在的的互联网系统中,mq已经必备基础设施了,我们已明显感觉它的必要性与强大.然而,它的本质是啥?存储转发系统罢了! MQ有很多 ...

  2. css 揭秘-读书笔记

    css 揭秘 [希]Lea verou 著 css 魔法 译 该书涵盖7大主题,47个css技巧,是css进阶必备书籍,开阔思路,探寻更优雅的解决方案.这本书完全用css渲染出的html写成的(布局. ...

  3. Selenium(一):原理与安装、简单的使用

    1. selenium原理 1.1 selenium介绍 Selenium是一个Web应用的自动化框架. 通过它,我们可以写出自动化程序,像人一样在浏览器里操作web界面. 比如点击界面按钮,在文本框 ...

  4. Create a Solution using the Wizard 使用向导创建解决方案

    In this lesson, you will learn how to create a new XAF solution. You will also be able to run the ge ...

  5. 【Visio流程图】借助redis来实现数据即时刷新

    [需求:]数据从竞品网站爬过来,经过分析处理之后,把结果通过网页实时反馈给业务人员. [应用:]2个应用: 一个是爬取数据的应用:不断从竞品网站爬数据,每次爬到的数据为一批.然后,对每一批爬到的数据进 ...

  6. ArcGIS Desktop中为图像设置成不显示背景色

    加载的栅格图层在arcgis中显示有黑色背景 方法一:如果有矢量边界的话,直接用矢量边界把黑色背景裁剪掉即可. 方法二: 如果是RGB三色: 这个只是不显示,并不改变原有的值 如果是值: 附:为影像数 ...

  7. OpenCV:图像的开运算与闭运算

    导包: import numpy as np import cv2 import matplotlib.pyplot as plt def show(image): plt.imshow(image) ...

  8. Checklist for an RMAN Restore (Doc ID 1554636.1)

    Checklist for an RMAN Restore (Doc ID 1554636.1) APPLIES TO: Oracle Database - Enterprise Edition - ...

  9. 关于OpenCASCADE数组序列的起始值

    C/C++的数组是从0开始计算的,5个值的数组则下标会对应 0, 1, 2, 3, 4. 在数学上可能不这么数,我所知道的 Mathematica 内的 List 是从 1 开始作为下标的. Open ...

  10. golang中的viper示例

    这是第二次实操viper了, 年纪大了就多练练,才能记住. http://go.coder55.com/article/6589 https://github.com/spf13/viper pack ...