golang中type常用用法
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常用用法的更多相关文章
- golang中type关键字使用
type关键字使用 type是go语法里的重要而且常用的关键字,type绝不只是对应于C/C++中的typedef.搞清楚type的使用,就容易理解go语言中的核心概念struct.interface ...
- Golang中Label的用法
在Golang中能使用Label的有goto, break, continue.,这篇文章就介绍下Golang中Label使用和注意点. 注意点: Label在continue, break中是可选的 ...
- Elasticsearch——Rest API中的常用用法
本篇翻译的是Elasticsearch官方文档中的一些技巧,是使用Elasticsearch必不可少的必备知识,并且适用于所有的Rest Api. 返回数据格式化 当在Rest请求后面添加?prett ...
- Python中type的用法
目录 描述 语法 用法 type和isinstance Type和Object 描述 python的 type 函数有两个用法,当只有一个参数的时候,返回对象的类型.当有三个参数的时候返回一个类对象. ...
- java string中indexOf()常用用法
Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String st ...
- golang 中strconv包用法
链接:https://studygolang.com/articles/5003 http://www.cnblogs.com/golove/p/3262925.html
- Golang中的RegExp正则表达式用法指南
------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...
- 基础知识 - Golang 中的正则表达式
------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...
- WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化
WPF中的常用布局 一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...
随机推荐
- 如何获取JVM堆转储文件
堆转储是诊断与内存相关的问题(例如内存泄漏缓慢,垃圾回收问题和 java.lang.OutOfMemoryError.它们也是优化内存消耗的重要工具. 有很多很不错的的工具,例如Eclipse MAT ...
- PAT 1005 Spell It Right 字符串处理
Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output e ...
- Django入门必知必会操作
一.Django基础必备三件套 HttpRseponse 内部传入一个字符串参数,返回给浏览器. 在app目录下的views.py添加函数,添加函数之前必须在urls.py添加函数对应关系,否则访问不 ...
- idea中tomcat乱码
idea中tomcat乱码 解决方案: a. file - settings - 搜File Encodings,改为utf-8 b.打开idea工作目录bin,在idea64.exe.vmoptio ...
- Typescript使用字符串联合类型代替枚举类型
TypeScript宗旨 我觉得Typescript的宗旨是 任何一个 TypeScript 程序,在手动删去类型部分,将后缀改成 .js 后,都应能够正常运行.Typescript是javascri ...
- HTML空元素
什么是空元素? 首先空元素下是没有子级节点和内容的.然后空元素是在开始标签中关闭的,也就是说空元素没有闭合标签的. 在HTML中的空元素有以下几个: <area> <base> ...
- QT总结
作为一个QT(C++/linux/windows)开发工程师,把自己在工作中遇到的一些QT问题持续总结给大家,一起分享: 一.隐藏鼠标:QApplication::setOverrideCursor( ...
- LRU hashMap(拉链) + 双向链表 java实现
//基于 hash (拉链法) + 双向链表,LRUcache //若改为开放寻址,线性探测法能更好使用cpuCache public class LRU { private class Node { ...
- beego和bee安装问题解决
如果使用go mod模式,直接安装bee时会报错: go: github.com/beego/bee imports github.com/beego/bee/cmd imports github.c ...
- class与class的继承
class Point{ constructor(x,y){ this.x = x; this.y = y; } toString(){ return '(' + this.x + ',' + thi ...