ドット括弧」構文の意味を教えてください。[重複しています]。
2023-07-29 03:56:15
質問内容
私は、mongodbにデータを格納するGoアプリケーションのサンプルを勉強しています。この行のコード ( https://github.com/zeebo/gostbook/blob/master/context.go#L36 ) のコードは、gorilla セッションに保存されたユーザー ID にアクセスしているようです。
if uid, ok := sess.Values["user"].(bson.ObjectId); ok {
...
}
誰かここの構文を説明してくれませんか?私は理解している
sess.Values["user"]
がセッションから値を取得するのは理解できますが、その後に続く部分は何でしょうか?ドットの後の式はなぜ括弧でくくられるのでしょうか?これは関数の呼び出しなのでしょうか?
どのように解決するのですか?
sess.Values["user"]
は
interface{}
であり、括弧で囲まれたものを
タイプアサーション
. の値をチェックします。
sess.Values["user"]
の値が
bson.ObjectId
. もしそうなら
ok
になります。
true
. それ以外の場合、それは
false
.
例えば
var i interface{}
i = int(42)
a, ok := i.(int)
// a == 42 and ok == true
b, ok := i.(string)
// b == "" (default value) and ok == false
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] PHPの文字列で、シングルクオートとダブルクオートの違いは何ですか?
-
[解決済み] Pythonの "at"(@)マークは何をするものですか?
-
[解決済み] .の違いは何ですか?(ドット)と$(ドルマーク)の違いは何ですか?
-
[解決済み] ダブルコロン「:」の意味を教えてください。
-
[解決済み】関数宣言の構文:関数名の前に括弧でくくられたもの
-
[解決済み] env varが空の場合、どのようにデフォルト値を割り当てるのですか?
最新
-
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 実装 サイバーパンク風ボタン