Go 如何转换类型别名的一部分

Go 如何转换类型别名的一部分,go,Go,类型类型别名[]*别名本质上是[]*int 我想能够将别名转换回[]*int试试这个,你可以通过正确的转换来实现 package main import ( "fmt" ) type alias int type aliases []*alias func main() { a1 := alias(1) t := aliases{&a1} fmt.Println([]*int([]*alias(t))) } 榜样 如果要获取所有值(而不仅仅是第一

类型
类型别名[]*别名
本质上是
[]*int


我想能够将
别名
转换回
[]*int

试试这个,你可以通过正确的转换来实现

package main

import (
    "fmt"
)

type alias int
type aliases []*alias

func main() {
    a1 := alias(1)
    t := aliases{&a1}

    fmt.Println([]*int([]*alias(t)))
}
榜样

如果要获取所有值(而不仅仅是第一个索引),必须循环并强制转换每个元素

type alias int
type aliases []*alias

func main() {
    a1 := alias(1)
    t := aliases{&a1}

    orig := int(*([]*alias(t)[0]))
    fmt.Println(orig)
}

示例:

您可以使用unsafe.Pointer,有点不安全,因此不推荐使用

func main() {
    a1 := alias(1)
    t := aliases{&a1}

    orig := []*int{}

    for _, each := range t {
        temp := int(*each)
        orig = append(orig, &temp)
    }

    fmt.Printf("%#v\n", orig) // []*int{(*int)(0x10434114)}
}
试试它的效果

PointerToSliceOfPointersToInt := (*([]*int))(unsafe.Pointer(&t))