繁体   English   中英

在Go中将Slice指针转换为Slice

[英]Converting Slice pointer to Slice in go

我有一些方法可以返回切片指针中的数据,现在我必须将其转换为切片数组。 如何将切片指针转换为切片数组。

peerRoundState, err := s.nodeview.PeerRoundStates()
fmt.Println("This return value is slice pointer", peerRoundState)
if err != nil {
    return nil, err
}
//PeerRoundStates this is type of slice.
return &ConsensusResponse{
    RoundState: s.nodeview.RoundState().RoundStateSimple(),
    PeerRoundStates: peerRound,
}, nil

我想将切片指针的peerRoundState类型转换为PeerRoundStates切片数组。

对于slice,您必须谨慎使用值slice而不是指针val := *ptr ,因为两者都将指向相同的数据数组地址。 在切片指针中完成的更改也将反映在值切片上,因为切片数据结构包含对实际数据数组的引用。

查看操场示例中从指针到值的2种分配情况。 这里描述了两种情况:

  1. 将切片复制为值-将切片属性和地址复制到数据数组
  2. 复制slice元素-复制所有slice元素并创建一个新slice

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM