Maison  >  Article  >  développement back-end  >  Fonction dans Go qui convertit une tranche int en un type de pointeur de tranche int personnalisé

Fonction dans Go qui convertit une tranche int en un type de pointeur de tranche int personnalisé

王林
王林avant
2024-02-08 21:33:09521parcourir

Go 中将 int 切片转换为自定义 int 切片指针类型的函数

Ce que l'éditeur PHP Xinyi vous présentera aujourd'hui est la fonction qui convertit les tranches int en types de pointeurs de tranche int personnalisés en langage Go. Dans le langage Go, slice est un type de données très couramment utilisé qui peut augmenter ou diminuer dynamiquement le nombre d'éléments. Parfois, nous devons convertir une tranche en un type de pointeur de tranche personnalisé pour une opération dans une fonction. Cet article décrira en détail comment réaliser cette conversion et donnera un exemple de code pour référence. En étudiant cet article, je pense que tout le monde comprendra mieux l'utilisation des tranches dans le langage Go.

Contenu de la question

Je souhaite prendre une tranche de int comme entrée du constructeur et renvoyer un pointeur vers la liste d'origine, en transtypant vers mon type personnalisé externe (type intlist []int).

Je peux faire ça :

type intlist []int

func newintlistptr(ints []int) *intlist {
    x := intlist(ints)
    return &x
}

Mais je ne peux pas faire ça :

type IntList []int

func NewIntListPtr(ints []int) *IntList {
    return &ints
}

// or this for that matter:

func NewIntListPtr(ints []int) *IntList {
    return &(IntList(ints))
}

// or this

func NewIntListPtr(ints []int) *IntList {
    return &IntList(*ints)
}

// or this

func NewIntListPtr(ints *[]int) *IntList {
    return &(IntList(*ints))
}

Existe-t-il une phrase qui peut y parvenir ?

Solution

Vous faites ceci :

func NewIntListPtr(ints []int) *IntList {
    return (*IntList)(&ints)
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer