8. 类型声明,方法,接口
来源:互联网 发布:天下霸唱抄袭证据知乎 编辑:程序博客网 时间:2024/05/16 18:43
1.内置类型2.引用类型3.结构类型4.嵌入类型
1.用户自定义类型
package mainimport ( "fmt")type user struct { name string email string ext int private bool}func main() { var a int a = 100 fmt.Println(a) var bill user lisa := user { name : "lisa", email : "184200@qq.com", ext : 123, private : true, } fmt.Println(lisa)}
package mainimport ( "fmt")type admin struct { person user level string}type user struct { name string email string ext int private bool}func main() { fred := admin { person : user { name : "Lisa", email : "18@qq.com", ext : 123, private : true, }, level : "super", } fmt.Println(fred)}
type Duration int64 // 基于 int64 声明一个新类型,相当于 c 语言 typedef,但不是一个类型func main() { var dur Duration dur = int64(1000) // 报错,编译器不会对不同类型的值做隐式转换 fmt.Println(dur)}
package mainimport ( "fmt")type Duration int64func main() { var dur Duration //报错:.\hello.go:11: cannot use int64(1000) (type int64) as type Duration in assignment dur = int64(1000) fmt.Println(dur)}
- 方法
package mainimport "fmt"type user struct { name string email string}func (u user) notify() { fmt.Printf("Sending User Email To %s<%s>\n", u.email,u.email)}func (u *user) change(email string) { u.email = email}func main() { //user 类型的值可以用来调用 //使用值接收者声明的方法 bill := user{"Bill", "bill@qq.com"} bill.notify() //使用值接收者声明的方法 //使用值接收者声明的方法 lisa := &user{"Lisa", "lisa@qq.com"} lisa.notify() // (*lisa).notify() 编译器转换的 //user 类型的值可以用来调用 //使用指针接收者声明的方法 bill.change("bill@11111111111111.com") // (&bill).changeEmail ("bill@newdomain.com") bill.notify()}
值接收者:
指针接收者:
3.接口
package mainimport ( "fmt")type notifier interface { notify()}type user struct { name string email string}func (u *user) notify() { fmt.Printf("Sending user email %s<%s>\n", u.name, u.email)}func main() { u := user{"bill","bill@qq.com"} // 报错,.\hello.go:24: cannot use u (type user) as type notifier in argument to sendNotification: //user does not implement notifier (notify method has pointer receiver) sendNotification(u) //sendNotification(&u)}func sendNotification(n notifier) { n.notify()}
4.公开或未公开标示符
阅读全文
0 0
- 8. 类型声明,方法,接口
- 能用foreach遍历访问的对象需要实现____接口或声明____方法的类型
- 能用foreach遍历访问的对象需要实现____接口或声明____方法的类型
- PHP方法参数类型声明
- 接口中的方法不能声明为static
- 关于"复杂类型声明"的分析方法
- Java泛型让声明方法返回子类型
- 转:关于"复杂类型声明"的分析方法
- HTML头部声明文档类型、语言和字符集的方法
- 各种类型接口数据的获取方法
- 后台接口提供的调用方法类型
- C++异常处理 - 栈解旋,异常接口声明,异常类型和异常变量的生命周期
- 泛型接口的实现方式一:在子类的定义上声明泛型类型
- 接口默认声明
- 声明一个栈接口
- Java接口声明对象
- 异常接口声明
- .NET 声明COM接口
- 【程序员周边】程序员系列表情包
- BitmapUtil
- 驱动编程(一),NT
- postgresql----继承表INHERITS PARENT TABLE
- 小程序页面布局之Flexbox布局
- 8. 类型声明,方法,接口
- QQ第三方登录
- 用分层结构打造微 MVC 框架
- 关于Qt的QAxWidget
- PL/SQL 快捷键设计以及添加快捷键 .
- vue icon 图标库
- **Linux环境下部署WEB项目出现的BUG集锦**
- 【云星数据---大数据部集群署系列011】:alluxio java API 实战--01基本API
- 一篇关于Vim详细介绍的文章