加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Go语言变态用法

发布时间:2020-12-16 19:00:07 所属栏目:大数据 来源:网络整理
导读:今天为了提交notepad++高亮的BUG,写了一个变态代码. BUG地址: https://code.google.com/p/go/issues/detail?id=5798 下面是稍微调整后的代码(http://play.golang.org/p/RYq82b7BN2): package mainimport "fmt"type int bytefunc (p int) Foo() {fmt.Printf("

今天为了提交notepad++高亮的BUG,写了一个变态代码.

BUG地址: https://code.google.com/p/go/issues/detail?id=5798

下面是稍微调整后的代码(http://play.golang.org/p/RYq82b7BN2):

package main

import "fmt"

type int byte

func (p int) Foo() {
	fmt.Printf("int.Foo: %vn",p)
}

func int_Foo(x byte) {
	f1 := int.Foo
	f1(int(x))
	f2 := int(x).Foo
	f2()
}

func main() {
	int_Foo(32)
}

代码输出:

int.Foo: 32
int.Foo: 32

主要有以下几个特性:

  • 内置类型 int 被重新定义,这里是被定义为类型,其实也可以被定义为变量名
  • 新类型 int 的方法表达式(method expressions): int.Foo
  • 新类型 int 的方法值(method expressions): int(x).Foo
  • 不能被递归定义为自身类型,比如 type int int. 会导致无效递归类型错误: "invalid recursive type int".

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读