- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
<分区>
我尝试在我的类型上实现 Stringer
接口(interface),如下所示:
package main
import (
"fmt"
)
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (o IPAddr) String() string {
return fmt.Sprintf("%v.%v.%v.%v", o[0], o[1], o[2], o[3])
}
func main() {
hosts := map[string]IPAddr{
"loopback": {127, 0, 0, 1},
"googleDNS": {8, 8, 8, 8},
}
for name, ip := range hosts {
fmt.Printf("%v: %v\n", name, ip)
fmt.Printf("%v\n", ip.String())
}
}
在上面的代码中,我使用了一个值接收器来实现 String()
方法。 Printf
识别了我的实现并在我的类型上调用了正确的 String
函数。
输出:
googleDNS: 8.8.8.8
8.8.8.8
loopback: 127.0.0.1
127.0.0.1
然后我更新了我的代码以使用指针接收器:
func (o *IPAddr) String() string {
return fmt.Sprintf("%v.%v.%v.%v", o[0], o[1], o[2], o[3])
}
更新代码的输出:
loopback: [127 0 0 1]
127.0.0.1
googleDNS: [8 8 8 8]
8.8.8.8
Printf
方法不再调用我的 String
方法。输出告诉我 Printf
使用类型的默认 String
方法。但是,当我调用ip.String()
时,使用了我的方法。
有人可以向我解释一下这种行为吗?据我所知,我们可以通过值和指针接收器来实现接口(interface)的方法。
谢谢。
Go 新手,所以请多多包涵。 我一直在查看“围棋之旅”页面,无意中发现了一些关于 Stringer 的令人费解的东西。考虑 https://tour.golang.org/methods/18 处的练
The Go FAQ answers a question关于方法中按值与按指针接收器定义的选择。该答案中的陈述之一是: If some of the methods of the type must
对于 Go 之旅中的 Stringers 练习:对于两种不同格式的打印,我得到了两种不同的输出。我唯一改变的是格式动词。他们是 %v 和 %d。理论上,它们会给出相同的输出。但是输出的顺序也改变了,这
我正在尝试使用 go generate/stringer (golang.org/x/tools/cmd/stringer) 在枚举上生成 String() 方法。我有问题,我认为是因为不同系统上的
知道如何修复下面的错误吗?我有一个 go 生成器 (stringer),我尝试运行它,但它一直报告说它找不到包导入,尽管包肯定是导入的。 stringer: checking package: mai
这个问题在这里已经有了答案: Can I type assert a slice of interface values? (2 个答案) 关闭 3 年前。 我有一个实现 stringer 接口(i
这个问题在这里已经有了答案: Why isn't my Stringer interface method getting invoked? When using fmt.Println (6 个答
我需要以这种格式将数据发送到数据库 - {"param1":"value1", "param2":"value2", "param3": {"username": "admin", "password
我正在完成 golang 之旅,但我被困在其中一个练习中。我不确定为什么以下内容不适用于 String() 函数: type IPAddr [4]byte func (addr IPAddr) Str
与 fmt.Stringer 一样, fmt 包寻找 error interface打印值时。如果一个type满足这两个接口(interface),fmt 仅在查找 error 而不是 Stringe
我可以实现 Stringer 来指定 fmt.Print() 如何将我的自定义类型写入字符串。 json marshal 有等效项吗? 我想在 go 中存储唯一值,并在 json 中将其表示为一个 s
这个问题在这里已经有了答案: puzzling behavior for Stringers? (2 个答案) 关闭 4 年前。 全部: 只是一个简单的问题: 围棋教程中 https://tour.
我有一个这样的结构: .foo/bar/constants.go .foo/constants.go .main.go 在 main.go 中声明类型: package agepack type Ev
我正在尝试使用 stringer cmd 以便我可以为某些 int 类型生成 String() 方法。这是代码的样子 //go:generate stringer -type=MyIntType ty
我想重写所有实例 sql.NullString 的 Stringer 接口(interface),以便实例的输出是 instance.String 而不是 { instance.String, ins
刚接触 Golang。所以我在 Go 之旅中读到了关于 stringer 的内容,我想知道是否有任何方法可以为任何类型的 slice 定义一个通用的自定义 Stringer()?例如: package
package main type foo struct { bar string baz string } func (f foo) String() string { re
假设我有以下代码: package main import "fmt" type Car struct{ year int make string } func (c *Car)Str
我是一名优秀的程序员,十分优秀!