- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - phát hiện rò rỉ bộ nhớ Ruby/Ruby on Rails
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在学习 Go,而且我坚持使用 Go 之旅(exercise-stringer.go:https://tour.golang.org/methods/7)。
这是一些代码:
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
func (a IPAddr) String() string {
return fmt.Sprintf("%d.%d.%d.%d", a...)
}
所以我认为 IPAddr
的内部表示是 [4]byte
,所以展开运算符有效。但我得到:
cannot use []string literal (type []string) as type []interface {} in argument to fmt.Sprintf
什么鬼? String slice 也不行,这是怎么回事?
biên tập:抱歉,我的问题中有一个错误 - 错误是关于类型 IPAddr
,而不是 []sợi dây
。我在玩代码,我粘贴了错误的输出。无论如何,感谢peterSOVà 0x434D53关于 Go 中 slice 的不变性。
好吧,这引发了另一个问题。为什么要这样实现呢?我想您只需要一些 Iterable
接口(interface),因此实现它的任何结构都将“正常工作”。
旁注:当我第一次听说 Go 时,有这样一句大胆的声明“已编译,但富有表现力”。显式接口(interface)实现就是一个很好的例子,但是像显式转换、没有运算符重载等等给了我“90 年代 Java 的感觉”。这很可悲,因为 Go 似乎是一门很棒的语言。
câu trả lời hay nhất
Exercise: Stringers
Make the
IPAddr
type implementfmt.Stringer
to print the address as a dotted quad.For instance,
IPAddr{1, 2, 3, 4}
should print as"1.2.3.4
".gói chính
nhập khẩu "fmt"
type IPAddr [4]byte
// TODO: Add a "String() string" method to IPAddr.
hàm main() {
addrs := map[string]IPAddr{
"loopback": {127, 0, 0, 1},
"googleDNS": {8, 8, 8, 8},
}
for n, a := range addrs {
fmt.Printf("%v: %v\n", n, a)
}
}
没有从 []sợi dây
đến []interface {}
的隐式转换。参见 Conversionshiện hữu The Go Programming Language Specification .您需要提供显式转换。例如,
gói chính
nhập khẩu "fmt"
type IPAddr [4]byte
// A "String() string" method for IPAddr.
func (a IPAddr) String() string {
return fmt.Sprintf("%d.%d.%d.%d", a[0], a[1], a[2], a[3])
}
hàm main() {
addrs := map[string]IPAddr{
"loopback": {127, 0, 0, 1},
"googleDNS": {8, 8, 8, 8},
}
for n, a := range addrs {
fmt.Printf("%v: %v\n", n, a)
}
}
Đầu ra:
loopback: 127.0.0.1
googleDNS: 8.8.8.8
关于go - 为什么我不能执行 fmt.Sprintf ("%d.%d.%d.%d",一个...)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33418107/
在我们的项目中,我们决定在我们的项目中使用最新的 fmt 版本 (6.2.0) 并主要使用 printf 功能,因为我们在广泛使用 printf 的地方进行日志记录。 我使用 fmt 包中包含的 CM
JSTL 标签用来绑定数据源(.properties)文件,JSTL 标签用来从指定的资源文件中调用信息。 语法 JSP 标签的语法如下: 代码块 其中: basename:指定要
我有以下 JSTL: enumValue.reputation 给出“非常好”、“完美”等字符串,对于这种情况,我需要将其小写“非常好”、“完美”。怎么把它变成小写?
为什么是这样fmt::format_to(OutputIt, ...)而不是 fmt::print(OutputIt, ...) ?? 我目前正在熟悉 {fmt} , 一个/现代 C++ 格式库。 在
所以我目前正在开始使用 Rust,并且正在阅读我的 Rust By Example。 做练习,边玩边玩代码。 但在 RBE Display函数描述它将 Fmt::Display 描述为比 Fmt::D
我不确定如何命名这个问题,因为我是 Rust 新手,所以请随意提出修改建议。 我有两个结构。一个是 Job 结构,其中包含一些数字,例如作业需要多长时间等。另一个是 JobSequence,其中包含
我不确定如何命名这个问题,因为我是 Rust 新手,所以请随意提出修改建议。 我有两个结构。一个是 Job 结构,其中包含一些数字,例如作业需要多长时间等。另一个是 JobSequence,其中包含
关于Golang中的标准I\O,网上所有的教程,无一异常(exception)地讨论和使用bufio,我测试过,效果很好。 但我的问题是关于使用 fmt 包读取标准输入,这要么给我错误,要么陷入循环。
正如标题,我很难描述这个问题。所以我在下面展示了示例代码、输入和输出。 package main import ( "fmt" ) func main() { for i := 1;
我正在尝试在我的 JSP Web 应用程序上本地化货币,问题是当我要求语言环境时,我只得到语言代码(“en”)而不是完整的语言和国家代码(“en_US”)。问题是,当 setLocale 的值不包含语
我使用的是 MACOS Mojave 版本 10.14.3,需要使用 GNU 编译器而不是 clang。 我使用 brew install gcc 安装了 gcc 编译器.然后我使用 brew ins
我正在尝试编译一些代码,但出现了一个非常奇怪的错误: the trait core::fmt::Show is not implemented for the type core::fmt::Show
我是 Go 语言和编程的新手。 谁能解释错误的含义以及我该如何解决? 最佳答案 使用 fmt.Println 而不是 fmt.PrintLn。将字母 L 小写。 关于go - undefined :
package main import ( "fmt" ) func main() { fmt.Printf("%c, %x, %x", 'ᚵ', 'ᚵ', "ᚵ") } 输出: ᚵ,
每当我在 Windows cmd 上的 Go 中运行 fmt.Print("\033c") 时,它不会清除屏幕,而是在我执行 console 时打印 c。 log("\033c") 在 javascr
我正在使用字典进行一些测试,为此,我以一种格式从数据库中打印出我想要的 Float64 值,以便将它们复制并粘贴到我的测试结构数组中,但是当我的测试失败时,我注意到这些值不同,但仅相差 0.00000
我目前有一个项目是这样组织的: ~/code/go /bin /pkg /src /proj/main.go
我目前正在做一个 spring 项目,我不得不在我的 JSP 中使用 fmt 标签。事实上 fmt 标签对我来说工作正常,它从 messages.properties 读取正确的值文件。 例如: 在
我想知道{fmt}库是否只允许修改包含多个位置参数的字符串中的一个位置参数? 这是我的测试不起作用,{fmt}文档未显示解决方案 std::string text = "{name} is {nb}
Đã đóng. Câu hỏi này không thể lặp lại được hoặc do lỗi chính tả. Nó hiện không chấp nhận câu trả lời. Bạn muốn cải thiện vấn đề này? Cập nhật câu hỏi để bao gồm câu hỏi này
Tôi là một lập trình viên xuất sắc, rất giỏi!