囲碁言語の基本構造と使用例
概要
構造体とは、同一または異なる種類のデータの集合体である
構文
構造体を定義する [カスタム構造体の名前を特定し、同じパッケージ内で繰り返すことはできません。
type struct name struct {
field1: value of field1,
field2: value of field2,
......
}
例
//Student
type Student struct {
Name string //name
Age int //age
Sex bool //gender true:male false:female
}
構造定義の3つの形態
第一の【基本的なインスタンス化】について
var stu Student
2つ目の【ポインタ型構造体】について
var stu *Student = new(Student)
3つ目は、[&操作で、構造体のアドレスを取って、インスタンス化する]です。
var stu *Student = &Student{}
構造体を初期化する
キー・バリュー・ペア初期化構造
で区切られたキー値、.で区切られたキーバリューペア。
変数名 := 構造体の型名 {.
フィールド1 field1 の値。
フィールド 2:フィールド 2 の値。
......
}
例
stu3 := Student{
Name: "李四",
Age: 18}
値リストが構造体を埋める
順番に、すべてのフィールドが入力されている必要はありません。
変数名 := 構造体型の名前 {.
フィールド 1 の値です。
フィールド 2 の値です。
......
}
stu4 := Student{
"王五",
18,
true,
}
匿名構造体
値を代入しながら構造を定義する
変数名 := struct{
field1: フィールドタイプ1。
フィールド2:フィールドタイプ2。
......
}{
// フィールド値の初期化
フィールド1:フィールド1の値。
フィールド 2: フィールド 2 の値。
......
}
stu5 := struct {
Name string
Age int
}{
Name: "王五",
Age: 18,
}
構造体メンバへのアクセス
割り当て、アクセスはすべて"で行います。 "はこの記号をドットで囲みます。
<ブロッククオート構造体です。フィールド
var stu Student
stu.Name="Zhang San" //assign a value
stu.Age=18
stu.Sex=true
fmt.Println(stu.Age) //access
関数の引数としての構造体
func function name([struct variable, struct pointer variable]){}
func printStudent(stu Student) {}
func printStudent(stu *Student) {}
構造体へのポインタ
構造体ポインターを使用して、構造体メンバーにアクセスするには、"." 演算子を使用します。
var variable name * structure name
var stu1 *Student = new(Student)
stu1.Name = "李四"
stu1.Age = 20
stu1.Sex = false
構造体メソッドの追加
構造体にメソッドを追加し、funcとメソッド名の間に括弧を入れ、構造体へのポインタ参照を追加します[値の参照も可能]...。
func ([struct name]) method name ([argument list]) [return value list] {}
例
var stu Student
stu.Name = "Zhang San"
stu.Age = 18
stu.Sex = false
// Call
stu.sayHi()
//add structure method
func (stu Student) sayHi() {
fmt.Println(stu.Name, "Hi")
}
概要
golangは非オブジェクト指向言語なので、goの構造はjavaのクラスに似ていると言えますが、明らかに継承ポリモーフィズムのようなOO機能はありません。
ポインタ変数が構造体メンバにアクセスするには、.NET Frameworkを使用します。構造体のメンバへのアクセスは、CやC++であれば*を介して行わなければならないが、これはGoの最適化である。
例
package main
import "fmt"
// Define struct [identify the name of the custom struct, which cannot be repeated within the same package]
type Student struct {
Name string
Age int
Sex bool
sex bool }
func main() {
//Three forms of struct definition
var stu Student
stu.Name = "Zhang San"
stu.Age = 18
Stu.Sex = false
fmt.Println(stu)
var stu1 *Student = new(Student)
stu1.Name = "李四"
stu1.Age = 20
stu1.Sex = false
fmt.Println(stu1)
var stu2 *Student = &Student{}
stu2.Name = "Wang Wu"
stu2.Age = 55
stu2.Sex = true
fmt.Println(stu2)
//initialize the structure
stu3 := Student{
Name: "李四",
Age: 18}
fmt.Println(stu3)
stu4 := Student{
"Wang Wu",
18,
true,
}
fmt.Println(stu4)
//anonymous struct
stu5 := struct {
Name string
Age int
}{
Name: "王五",
Age: 18,
}
fmt.Println(stu5)
// printStudent(stu)
printStudent(stu1)
stu.sayHi()
}
// add struct method
func (stu Student) sayHi() {
fmt.Println(stu.Name, "Hi")
}
// func printStudent(stu Student) {
// fmt.Println(stu.Name, stu.Age, stu.Sex)
// }
func printStudent(stu *Student) {
fmt.Println(stu.Name, stu.Age, stu.Sex)
}
以上、Go言語の基本構造の使い方と例について詳しく説明しました。
関連
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
golang マイクロサービスフレームワーク 基本的なGin 基本的なルーティング 使い方 詳細
-
Go言語の基本 go buildコマンドの使い方と例 詳細
-
golang ソートによるプログラミング開発 詳細
-
go言語における並行処理のセキュリティとロックの説明
-
2つのcsvの実装例をマージするために移動します。
-
グラフの幅優先探索と深さ優先探索を実装するためのgo言語によるプログラミングを学ぶ
-
Goの配列とスライスの詳細な紹介
-
Go言語におけるエスケープ分析とは一体何なのでしょうか?
-
Goにおける文字列と[]byteの効率的な相互変換の例
-
go 言語のデバッグ: exec: "gcc": 実行可能ファイルが %PATH% に見つからない