英文:
How to add item to array in struct in golang
问题
使用以下代码,将IP结构添加到Server结构的ips数组中:
import (
"net"
)
type Server struct {
id int
ips []net.IP
}
func main() {
o := 5
ip := net.ParseIP("127.0.0.1")
server := Server{o, []net.IP{ip}}
}
在上述代码中,我们使用[]net.IP{ip}
将IP结构添加到Server结构的ips数组中。
关于ips数组的问题,你的代码是正确的。你可以使用切片(slice)来存储多个IP地址。如果你想在函数之间共享Server结构的实例,并且希望在不同函数中修改ips数组时,可以考虑使用指针。通过使用指针,你可以在不同函数之间共享相同的Server实例,并且对ips数组的修改将在所有函数中生效。以下是使用指针的示例:
import (
"net"
)
type Server struct {
id int
ips []*net.IP
}
func main() {
o := 5
ip := net.ParseIP("127.0.0.1")
server := Server{o, []*net.IP{&ip}}
}
在上述代码中,我们使用[]*net.IP{&ip}
将指向IP结构的指针添加到Server结构的ips数组中。
英文:
With the code below how do I add an IP struct to the Server struct's ips array?
import (
"net"
)
type Server struct {
id int
ips []net.IP
}
func main() {
o := 5
ip := net.ParseIP("127.0.0.1")
server := Server{o, ??ip??}
}
Do I even have the ips array correct? Is it better to use a pointer?
答案1
得分: 13
一个切片字面量的写法是[]net.IP{ip}
(或者[]net.IP{ip1,ip2,ip3...}
)。从风格上讲,使用带有字段名的结构体初始化器更加常见,所以Server{id: o, ips: []net.IP{ip}}
更加标准。整个代码示例如下所示:
package main
import (
"fmt"
"net"
)
type Server struct {
id int
ips []net.IP
}
func main() {
o := 5
ip := net.ParseIP("127.0.0.1")
server := Server{id: o, ips: []net.IP{ip}}
fmt.Println(server)
}
你问道:
我的
ips
数组是否正确?使用指针会更好吗?
你不需要使用指向切片的指针。切片本身就是一个小的结构体,包含指针、长度和容量。
英文:
A slice literal looks like []net.IP{ip}
(or []net.IP{ip1,ip2,ip3...}
. Stylistically, struct initializers with names are preferred, so Server{id: o, ips: []net.IP{ip}}
is more standard. The whole code sample with those changes:
package main
import (
"fmt"
"net"
)
type Server struct {
id int
ips []net.IP
}
func main() {
o := 5
ip := net.ParseIP("127.0.0.1")
server := Server{id: o, ips: []net.IP{ip}}
fmt.Println(server)
}
You asked
> Do I even have the ips array correct? Is it better to use a pointer?
You don't need to use a pointer to a slice. Slices are little structures that contain a pointer, length, and capacity.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论