Golang エラーを修正する方法: 関数への引数では 'x' (型 T) を型 U として使用できません
Go でコードを記述するときに、コンパイルが発生することがあります。 「関数の引数では型 U として 'x' (型 T) を使用できません」などのエラー。このエラーは、関数呼び出しで渡されたパラメーターの型が関数で宣言されたパラメーターの型と一致しないために発生します。この記事では、いくつかの一般的な状況とこのエラーの修正方法について説明します。
以下はサンプル コードです:
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" }
上記のコードでは、関数 printNumber
は int 型のパラメーターを受け取ることを想定していますが、 main
関数には文字列型パラメータが渡されます。このエラーを修正するには、渡されたパラメーターの型が関数で宣言されたパラメーターの型と一致することを確認する必要があります。
修正 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## 型のパラメータを受け取ることを想定しています。 #、ただし、
Admin 型のパラメーターが
main 関数に渡されます。このエラーを修正するには、渡されたパラメーターの型が関数で宣言されたパラメーターの型と一致することを確認する必要があります。
Admin タイプの
User フィールドを関数パラメーターとして使用できます。
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) }
以上がgolang エラーの修正方法: 関数の引数で 'x' (型 T) を型 U として使用することはできませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。