0

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

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 切片数组。

4

1 回答 1

3

对于 slice,你必须小心使用 value slice 而不是 pointer val := *ptr,因为两者都指向同一个数据数组地址。在切片指针中所做的更改也将反映在值切片上,因为切片数据结构包含引用实际数据数组。

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

  1. 将切片作为值复制 - 将切片属性和地址复制到数据数组
  2. 复制切片元素 - 复制所有切片元素并创建一个新切片
于 2018-10-26T11:42:33.880 回答