[解決済み] Goで複数の戻り値に対して変換/型アサーションを行うための慣用的な方法
2023-05-30 11:52:50
質問
Goで複数の戻り値をキャストするイディオム的な方法は何ですか?
一行でできますか?それとも、下の例でやったように一時変数を使う必要がありますか?
package main
import "fmt"
func oneRet() interface{} {
return "Hello"
}
func twoRet() (interface{}, error) {
return "Hejsan", nil
}
func main() {
// With one return value, you can simply do this
str1 := oneRet().(string)
fmt.Println("String 1: " + str1)
// It is not as easy with two return values
//str2, err := twoRet().(string) // Not possible
// Do I really have to use a temp variable instead?
temp, err := twoRet()
str2 := temp.(string)
fmt.Println("String 2: " + str2 )
if err != nil {
panic("unreachable")
}
}
ところで、この
casting
というのは、インターフェイスの場合でしょうか?
i := interface.(int)
どのように解決するのですか?
一行では無理です。 あなたの一時変数のやり方がいい。
ところで、インターフェイスの場合はキャスティングと言うのでしょうか?
実際にはaという 型アサーション . 型 <ストライク キャスト の変換は異なります。
var a int
var b int64
a = 5
b = int64(a)
関連
-
[解決済み] タイプスクリプト 型にインデックス署名がありません
-
[解決済み] Goでenumを表現する慣用的な方法は何ですか?
-
[解決済み] メソッドの戻り値の型を汎用的にするにはどうすればよいですか?
-
[解決済み] パラメータと戻り値におけるポインタと値の比較
-
[解決済み】TypeScriptまたはJavaScriptのタイプキャスト
-
[解決済み】データ(型インターフェース{})を文字列に変換できない:型アサーションが必要
-
[解決済み] TypeScriptでプロパティを持つ関数オブジェクトを作成する
-
[解決済み] TypeScript: bool値を文字列に変換する
-
[解決済み] 数値型を安全かつイディオムに変換するには?
-
[解決済み] Swift で CGFloat を Float にキャストする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン