golang中type常用用法
2024-09-04 20:16:12
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一些常用的用法。
最新文章
- .NET 工具类ObjectDumper 打印对象
- PHP 依赖注入,从此不再考虑加载顺序
- JS中关于比较运算符的问题(a===b)
- C#:org.in2bits.MyXls 文本格式日期 转换,以及设置单元格格式,保留两位小数点
- SQL防注入程序 v1.0
- 使用 Redis 实现分布式系统轻量级协调技术
- 使用Eclipse开发,Java Compiler中Annotation Processin不出现的解决方案
- 使用ttXactAdmin、ttSQLCmdCacheInfo、ttSQLCmdQueryPlan获取SQL相关具体信息[TimesTen运维]
- C# 并行编程 之 并发集合 (.Net Framework 4.0)(转)
- 克鲁斯卡尔(Kruskal)算法
- [原]性能优化之Hibernate缓存讲解、应用和调优
- 漏掉的账目(用C语言去重)
- JavaScript的异步机制
- javascript获取整数随机数
- Android-Bluetooth Low Energy(BLE)
- [Go] golang无缓冲通道实现工作池控制并发
- admin 自定义字段颜色 并加以简单判断
- 【Tomcat】面向初级 Web 开发人员的 Tomcat
- js中$
- pca总结,非常详细