今天为了提交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("int.Foo: %v\n",p)}func int_Foo(x byte) { f1 := int.Foo f1(int(x)) f2 := int(x).Foo f2()}func main() { int_Foo(32)}
代码输出:
int.Foo: 32int.Foo: 32
主要有以下几个特性:
内置类型int
被重新定义,这里是被定义为类型,其实也可以被定义为变量名 新类型 int
的方法表达式(method Expressions): int.Foo
新类型 int
的方法值(method Expressions): int(x).Foo
不能被递归定义为自身类型,比如 type int int
. 会导致无效递归类型错误: "invalID recursive type int". 总结 以上是内存溢出为你收集整理的Go语言变态用法全部内容,希望文章能够帮你解决Go语言变态用法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)