您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“怎么使用Go語言基礎(chǔ)結(jié)構(gòu)體”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“怎么使用Go語言基礎(chǔ)結(jié)構(gòu)體”吧!
結(jié)構(gòu)體是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合
定義結(jié)構(gòu)體【標識自定義結(jié)構(gòu)體的名稱,在同一個包內(nèi)不能重復(fù)】
type 結(jié)構(gòu)名 struct { 字段1: 字段1的值, 字段2: 字段2的值, ...... }
例子
//學(xué)生 type Student struct { Name string //姓名 Age int //年齡 Sex bool //性別 true:男 false:女 }
var stu Student
var stu *Student = new(Student)
var stu *Student = &Student{}
鍵值之間以:分隔;鍵值對之間以,分隔
變量名 := 結(jié)構(gòu)體類型名{
字段1: 字段1的值,
字段2: 字段2的值,
......
}
例子
stu3 := Student{ Name: "李四", Age: 18}
沒有字段,按著序列,必須全部填充
變量名 := 結(jié)構(gòu)體類型名{
字段1的值,
字段2的值,
......
}
stu4 := Student{ "王五", 18, true, }
定義結(jié)構(gòu)體時同時賦值
變量名 := struct{
字段1: 字段類型1,
字段2: 字段類型2,
......
}{
// 字段值初始化
字段1: 字段1的值,
字段2: 字段2的值,
......
}
stu5 := struct { Name string Age int }{ Name: "王五", Age: 18, }
賦值、訪問都使用"."點這個符號
結(jié)構(gòu)體.字段
var stu Student stu.Name="張三" //賦值 stu.Age=18 stu.Sex=true fmt.Println(stu.Age) //訪問
func 函數(shù)名([結(jié)構(gòu)體變量、結(jié)構(gòu)體指針變量]){}
func printStudent(stu Student) {} func printStudent(stu *Student) {}
使用結(jié)構(gòu)體指針訪問結(jié)構(gòu)體成員,使用 “.” 操作符。
var 變量名 *結(jié)構(gòu)名
var stu1 *Student = new(Student) stu1.Name = "李四" stu1.Age = 20 stu1.Sex = false
給結(jié)構(gòu)體添加方法,在func和方法名之間加一個括號,加入該結(jié)構(gòu)體的指針引用【也可以是值引用】
func ([結(jié)構(gòu)體名]) 方法名([參數(shù)列表])[返回值列表]{}
例子
var stu Student stu.Name = "張三" stu.Age = 18 stu.Sex = false //調(diào)用 stu.sayHi() //添加結(jié)構(gòu)體方法 func (stu Student) sayHi() { fmt.Println(stu.Name, "Hi") }
golang是非面向?qū)ο笳Z言,也可以說go語言中的結(jié)構(gòu)體類似java中的類,但是很明顯缺少繼承多態(tài)等等OO的特性
指針變量通過.訪問結(jié)構(gòu)體成員,如果是C或者C++一定要通過*訪問,這是Go對它的一個優(yōu)化
package main import "fmt" //定義結(jié)構(gòu)體【標識自定義結(jié)構(gòu)體的名稱,在同一個包內(nèi)不能重復(fù)】 type Student struct { Name string Age int Sex bool } func main() { //struct定義的三種形式 var stu Student stu.Name = "張三" 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 = "王五" stu2.Age = 55 stu2.Sex = true fmt.Println(stu2) //初始化結(jié)構(gòu)體 stu3 := Student{ Name: "李四", Age: 18} fmt.Println(stu3) stu4 := Student{ "王五", 18, true, } fmt.Println(stu4) //匿名結(jié)構(gòu)體 stu5 := struct { Name string Age int }{ Name: "王五", Age: 18, } fmt.Println(stu5) // printStudent(stu) printStudent(stu1) stu.sayHi() } //添加結(jié)構(gòu)體方法 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語言基礎(chǔ)結(jié)構(gòu)體”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。