Comment corriger l'erreur Golang : impossible d'utiliser 'x' (type T) comme type U dans l'argument de la fonction
Lors de l'écriture de code dans Go, vous rencontrerez parfois "impossible d'utiliser 'x' (type T) comme type U en argument pour fonctionner" telle erreur de compilation. Cette erreur se produit car lors d'un appel de fonction, le type de paramètre passé ne correspond pas au type de paramètre déclaré par la fonction. Cet article décrira quelques situations courantes et comment corriger cette erreur.
Ce qui suit est un exemple de code :
package main import "fmt" func printNumber(num int) { fmt.Println(num) } func main() { var str string = "123" printNumber(str) // 报错:"cannot use 'str' (type string) as type int in argument to printNumber" }
Dans le code ci-dessus, la fonction printNumber
s'attend à recevoir un paramètre de type int, mais une chaîne est passée dans le main</ code> fonction Paramètres de type. Pour corriger cette erreur, nous devons nous assurer que les types de paramètres passés correspondent aux types de paramètres déclarés par la fonction. <code>printNumber
期望接收一个int类型的参数,但在main
函数中传递了一个string类型的参数。为了修复这个错误,我们需要确保传递的参数类型与函数声明的参数类型相匹配。
修复方法1:将参数类型转换为函数期望的类型。比如使用strconv.Atoi
函数将字符串转换为整数。
package main import ( "fmt" "strconv" ) func printNumber(num int) { fmt.Println(num) } func main() { var str string = "123" num, err := strconv.Atoi(str) if err != nil { fmt.Println(err) return } printNumber(num) }
修复方法2:如果确定字符串中的内容可以转换为整数,可以直接使用strconv.Atoi
函数进行转换,并将结果直接传递给函数。
package main import ( "fmt" "strconv" ) func printNumber(num int) { fmt.Println(num) } func main() { var str string = "123" num, _ := strconv.Atoi(str) printNumber(num) }
User
类型的参数,但你却传递了一个Admin
类型的参数时,也会出现此错误。下面是一个示例代码:
package main import "fmt" type User struct { Name string Age int } func printUserInfo(user User) { fmt.Printf("Name: %v, Age: %v ", user.Name, user.Age) } type Admin struct { User Role string } func main() { admin := Admin{ User: User{Name: "Tom", Age: 32}, Role: "Administrator", } printUserInfo(admin) // 报错:"cannot use 'admin' (type Admin) as type User in argument to printUserInfo" }
上面的代码中,printUserInfo
函数期望接收一个User
类型的参数,但在main
函数中传递了一个Admin
类型的参数。为了修复这个错误,我们需要确保传递的参数类型与函数声明的参数类型相匹配。
修复方法:可以使用Admin
类型中的User
strconv.Atoi
pour convertir une chaîne en entier. package main import "fmt" type User struct { Name string Age int } func printUserInfo(user User) { fmt.Printf("Name: %v, Age: %v ", user.Name, user.Age) } type Admin struct { User Role string } func main() { admin := Admin{ User: User{Name: "Tom", Age: 32}, Role: "Administrator", } printUserInfo(admin.User) }
strconv.Atoi
pour convertir et transmettre le résultat directement à la fonction. 🎜rrreeeUtilisateur
, mais que vous transmettez un paramètre de type Admin
. 🎜🎜🎜Ce qui suit est un exemple de code : 🎜rrreee🎜Dans le code ci-dessus, la fonction printUserInfo
s'attend à recevoir un paramètre de type User
, mais dans main
Un paramètre de type Admin
est passé dans la fonction. Pour corriger cette erreur, nous devons nous assurer que les types de paramètres passés correspondent aux types de paramètres déclarés par la fonction. 🎜🎜Correction : Vous pouvez utiliser le champ Utilisateur
dans le type Admin
comme paramètre de fonction. 🎜rrreee🎜En utilisant la méthode ci-dessus, vous pouvez corriger l'erreur "Impossible d'utiliser 'x' (type T) comme type U dans l'argument de la fonction" rencontrée lors de la programmation dans Go. Ces méthodes garantissent que les types de paramètres transmis correspondent aux types de paramètres déclarés par la fonction, afin que le code soit compilé et exécuté correctement. 🎜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!