Go言語の配列とスライスの違いは何ですか?

青灯夜游
リリース: 2023-01-11 09:23:06
オリジナル
14507 人が閲覧しました

違い: 1. スライスはポインタ型で、配列は値型です; 2. 配列の長さは固定されていますが、スライスはそうではありません (スライスは動的配列と見なすことができます); 3. スライスには 1 つ多くの容量がありますthan arrays (cap) 属性; 4. スライスの最下層は配列です。

Go言語の配列とスライスの違いは何ですか?

#この記事の動作環境: Windows10 システム、Go 1.11.2、thinkpad t480 コンピューター。

関連する推奨事項: "

goチュートリアル"

次のコードは何を出力しますか?コメントを削除すると何が出力されるでしょうか?

package main

import (
   "fmt"
)
func main() {
   a := [2]int{5, 6}
   b := [2]int{5, 6}
   if a == b {
      fmt.Println("equal")
   } else {
      fmt.Println("not equal")
   }
   /*
      if a[:] == b[:] {
          fmt.Println("equal")
      } else {
          fmt.Println("not equal")
      }
   */
}
ログイン後にコピー

出力:

equal
ログイン後にコピー

コメントプロンプトを削除:

invalid operation: a[:] == b[:] (slice can only be compared to nil)
ログイン後にコピー

説明:

go language

● スライスはポインタ型、配列は値型です

# 配列の長さは固定されていますが、スライスは固定されていません (スライスは動的配列です)

##● そこにあります配列よりもスライスの方が多い 属性: 容量 (キャップ)

# スライスの最下層は配列です

#したがって、a と b は配列の型を定義し、配列の比較は同じです

ただし、a[:]、b[:]はスライスであり、スライス間の等価判定はできず、nilでしか判定できません

プログラミング関連の知識については、

プログラミング教育

をご覧ください。 !

以上がGo言語の配列とスライスの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート