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))