ホームページ バックエンド開発 Golang Go言語の変数とは何ですか

Go言語の変数とは何ですか

Dec 02, 2022 pm 07:53 PM
go golang 言語を移動

Go 言語では、変数はプログラムの実行中に変更 (変更) できる内容の量であり、変数はプログラムの基本単位であり、メモリ内のデータ格納スペースを表します。変数名で見つけることができます。変数の機能はユーザーデータを保存することであり、計算結果を保存したり、値を表現したりできるコンピューター言語の抽象的な概念です。

Go言語の変数とは何ですか

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

1. 概要

変数 (Variable) は、プログラムの実行中にコンテンツが変更 (修正) できる量です。基本単位はメモリ内のデータ記憶領域を表現したもので、変数値は変数名でわかります。

変数の機能はユーザー データを保存することであり、計算結果を保存したり、値を表現したりできるコンピューター言語の抽象的な概念です。

変数は、変数の識別子を通じて値を検索するプロセスです。変数のメモリ シミュレーションのデモンストレーション:

Go言語の変数とは何ですか

2. 定義: 宣言と初期化

var を使用して定義します。変数キーワード。その型を指定する必要があり、同時に初期化できます。初期化値が指定されていない場合は、型のデフォルト値が使用されます。構文は次のとおりです:

// 声明变量,未初始化(默认值初始化)
var name string
// 声明变量,特定值初始化
var user string = "Hank"
ログイン後にコピー

Go 言語の変数は宣言する必要がありますが、使用できますが、未定義の変数を直接使用することはできません。

3. 型のデフォルト値 (ゼロ値)

Go 言語の型のデフォルト値は次のとおりです: Integer と floatポイント変数のデフォルト値は 0 です。 文字列変数のデフォルト値は空の文字列です。 ブール変数のデフォルトは bool です。 スライス、関数、およびポインター変数のデフォルトは nil です。

4. 強い型付け

Go 言語は強く型付けされた言語であり、変数には型が必要であり、変数は特定の型のデータのみを格納できます。 。 [関連する推奨事項: Go ビデオ チュートリアル ]

5. 型導出

変数を定義するとき、初期値がvalue を使用する場合は、型の定義を省略でき、Go 言語はデータ自体から型を推定できます。構文は次のとおりです:

// 声明变量,特定值初始化,类型推导出user为字符串string型
var user = "Hank"
ログイン後にコピー

6. 短い宣言 (定義)

変数の定義を簡素化するには、演算子を使用します。 = 型導出を使用すると、変数の定義をすばやく完了できます。構文は次のとおりです:

user := "hank"
ログイン後にコピー

7. バッチ定義

var または := を使用して複数の変数を一度に定義できます。構文は次のとおりです:

var

var (
  v1 = 42
  v2 = "hank"
  )
也可以
var v1, v2 = 42, "hank"
ログイン後にコピー

:=

v1, v2 := 42, "hank"
ログイン後にコピー

コードのメンテナンスが簡単なため、var() 宣言ブロック構文を使用することをお勧めします。

8. バッチ割り当て

複数の変数を一度に割り当てます。 (短い定義に似ています。v1, v2, v3 := 42, "hank", false) 変数を定義した後、それらにバッチで値を代入します。定義関数はありません。構文は:

var (
  v1 int
  v2 int
)
// 批量赋值
v1, v2 = 42, 1024
ログイン後にコピー

この構文は通常、一度に複数の戻り値を受け取るために関数のバッチリターンで使用されます。構文は:

func main() {
  var (
    v1 int
    v2 int
  )
  // 调用函数,接收其返回值
  v1, v2 = getData()
}
// 返回两个值的函数
func getData() (int, int) {
  // 返回了两个值(假设42为最小值,1024为最大值)
  return 42, 1024
}
ログイン後にコピー

2 つの変数の値を交換すると非常に便利です:

var (
  v1 = 42
  v2 = 1024
)
// 交换
v1, v2 = v2, v1
ログイン後にコピー
#実行後、v1==1024、v2==42

9. 匿名変数

識別子 _ (アンダースコア) を持つ変数は、システムによって予約された匿名変数であり、代入後はすぐに解放され、匿名変数と呼ばれます。その関数は変数のプレースホルダーであり、変数に値の構造を割り当てます。通常、バッチ割り当て中に使用されます。たとえば、関数が複数の値を返し、その一部のみが必要な場合、必要がなければ _ を使用してスペースを占有します。 #10. 変数のスコープ

Go 言語の変数はブロックスコープです。ブロックは、関数、if/switch/for ステートメント、または独立した {} を含む、{} を使用して定義されたコード セグメントを指します。これらはすべてブロックです。ブロック内で定義された変数は、このブロック内でのみ使用できます。定義は、var または := で定義された変数を参照します。 Go 言語のスコープはカスケードです。つまり、内側のブロックが同じ名前の外側の変数を定義していない限り、内側のブロックは外側のブロックの変数に直接アクセスできます。デモンストレーションは次のとおりです:

func main() {
  var (
    v int
  )
  // 调用函数,仅仅需要第二个返回值,第一,三使用匿名变量占位
  _, v, _ = getData()
}
// 返回两个值的函数
func getData() (int, int, int) {
  // 返回3个值
  return 42, 1024, 2012
}
ログイン後にコピー

上面代码中: 在main()中,v2,v3被重新定义,则在main()中,v1是外部,而v2, v3是main函数局部的。 在main()内部的{}中,v3被重新定义,则在main()内部的{}中,v1是外部,而v2是main()定义的, v3是main()内部{}定义的的。

变量可以沿内部作用域向外部作用域查找变量的过程。

带有{}的语句,其中的变量也仅仅在内部有效,例如for,if,switch等,演示:

for i := 0; i < 10; i++ {
  fmt.Println(i)
}
fmt.Println(i)
// 会提示变量i未定义, undefined: i
ログイン後にコピー

注意i,是通过短声明在for内部定义的变量,仅仅在for内部有意义。

互不嵌套的{}见作用域不可见,不可互相访问。

func main() {
  {
    v := 42
  }
  {
    fmt.Println(v)
    // 会提示变量v未定义, undefined: v
  }
}
ログイン後にコピー

更多编程相关知识,请访问:编程教学!!

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

GOの浮動小数点番号操作に使用されるライブラリは何ですか? GOの浮動小数点番号操作に使用されるライブラリは何ですか? Apr 02, 2025 pm 02:06 PM

GO言語の浮動小数点数操作に使用されるライブラリは、精度を確保する方法を紹介します...

Go's Crawler Collyのキュースレッドの問題は何ですか? Go's Crawler Collyのキュースレッドの問題は何ですか? Apr 02, 2025 pm 02:09 PM

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Apr 02, 2025 pm 02:03 PM

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

Redisストリームを使用してGO言語でメッセージキューを実装する場合、user_idタイプの変換の問題を解決する方法は? Redisストリームを使用してGO言語でメッセージキューを実装する場合、user_idタイプの変換の問題を解決する方法は? Apr 02, 2025 pm 04:54 PM

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? Apr 02, 2025 pm 04:12 PM

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか? Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか? Apr 02, 2025 pm 05:09 PM

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

Golangの目的:効率的でスケーラブルなシステムの構築 Golangの目的:効率的でスケーラブルなシステムの構築 Apr 09, 2025 pm 05:17 PM

GO言語は、効率的でスケーラブルなシステムの構築においてうまく機能します。その利点には次のものがあります。1。高性能:マシンコードにコンパイルされ、速度速度が速い。 2。同時プログラミング:ゴルチンとチャネルを介してマルチタスクを簡素化します。 3。シンプルさ:簡潔な構文、学習コストとメンテナンスコストの削減。 4。クロスプラットフォーム:クロスプラットフォームのコンパイル、簡単な展開をサポートします。

Golang Generic Function Typeの制約がVSCodeで自動的に削除されるという問題を解決する方法は? Golang Generic Function Typeの制約がVSCodeで自動的に削除されるという問題を解決する方法は? Apr 02, 2025 pm 02:15 PM

VSCODEユーザーのGolang Generic Function Typeの制約の自動削除は、VSCODEを使用してGolangコードを書くときに奇妙な問題に遭遇する可能性があります。いつ...

See all articles