国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Go 語言的結構體與方法

開發(fā) 后端
結構體通過 type 和 struct 關鍵字進行聲明,type 后接結構體的名字,struct 后接結構體每個成員的定義。

[[394248]]

結構體

結構體是 go 語言中一個比較重要的概念,在 c 語言中也有類似的東西。由于他們沒有類的概念,結構體可以簡單理解成類,是一個不同類型的數(shù)據(jù)構成的一個集合。集合中不同類型的數(shù)據(jù)被稱為成員,每個成員都要自己不同的類型,可以理解為 js 中對象的每個屬性。

聲明結構體

結構體通過 type 和 struct 關鍵字進行聲明,type 后接結構體的名字,struct 后接結構體每個成員的定義。

  1. type Person struct { 
  2.   name string 
  3.  age int 
  4.   gender string 
  5.   address string 

上面代碼有點類似于其他語言中接口的定義,實際上,go 也支持定義接口,我們只需要將 struct 關鍵字替換成 interface 就表示定義接口。

初始化結構體

初始化結構體有兩種方式,一種是通過字面量的方式,用結構體名稱加上結構體各個成員值的方式進行初始化。用上面的 Person 結構體舉例:

  1. var p = Person{"Shenfq", 25, "男""湖南長沙"
  2. fmt.Println("Person:", p) 

 

這種方式需要每個值按照結構體成員定義時的順序進行初始化,當然,也可以通過鍵值對的方式,打亂其順序。這種方式可以對部分成員進行省略,省略的部分會根據(jù)其類型,取該類型的空值。

  1. var p = Person{ 
  2.   name"Shenfq"
  3.   address: "湖南長沙"
  4.  
  5. fmt.Println("Person:", p) 
  6. fmt.Println("Person.age:", p.age) 

如果要訪問結構體成員,可以通過 . 操作符,這與其他語言取對象屬性的方式一致。這里我們使用 p.age 的方式獲取了結構體 p 的成員 age 的值。

除了字面量的方式初始化,結構體還可以通過 new 關鍵字進行初始化。

  1. var p = new(Person) 

通過該方式初始化的結構體有兩個特點:

  • new 關鍵字返回的為結構體指針;
  • new 關鍵字返回的結果每個成員都是空值;

所以,我們通過 new 初始化結構體的時候,取值的時候需要加 * 號。

  1. var p = new(Person) 
  2. p.name = "Shenfq" 
  3. p.age = 18 
  4. p.gender = "男" 
  5. p.address = "湖南長沙" 
  6.  
  7. fmt.Println("Person:", p) 

如果直接在控制臺打印變量 p,會發(fā)現(xiàn)前面有個 &,表示這是一個指針。

匿名結構體

結構體和函數(shù)一樣也可以定義一個沒有名字的結構體,就是在定義結構體的同時進行初始化,并且省略 type 關鍵字和結構體名稱。

  1. var p = struct { 
  2.   name string 
  3.   age int 
  4.   gender string 
  5.   address string 
  6. } { "Shenfq", 25, "男""湖南長沙"

方法

結構體只能定義一個個成員,而且成員都是基礎類型,想要實現(xiàn)類似 OOP 中類的概念,還需要為結構體提供方法。實際上,我們可以為結構體指定方法,只需要在定義函數(shù)的函數(shù)名前面加上結構體名,就能定義該函數(shù)為結構體的方法。

我們?yōu)橹暗?Person 結構體定義一個 sayHello 的方法。

  1. func (p Person) sayHello(name string) { 
  2.  fmt.Printf("Hi %s, I'm %s, How are you?\n"name, p.name
  3. p.sayHello("Jack"

調(diào)用結構體方法的方式,和取結構體成員的值一樣,也需要通過 . 操作符。

在 goland 的 Structure 中,能看到 Person 結構體是包含 sayHello 方法的,說明方法的定義即使不在結構體內(nèi),這個方法也是屬于該結構體的。

方法中的指針

有時候,我們調(diào)用方法的同時,需要修改結構體中一些成員的值,會發(fā)現(xiàn)原結構體的值并沒有改變。

  1. func (p Person) growth() { 
  2.  p.age++ 
  3.  
  4. var p = Person{ age: 25 } 
  5. p.growth() 

上面的代碼中,我們定義的 growth 方法,會修改傳入結構體中的 age 值。但是實際結果和我們預期的不一樣。

  1. var p = Person{ age: 25 } 
  2.  
  3. p.growth() 
  4. fmt.Println("age:", p.age) 

 

這是由于,傳入方法中的結構體,是原結構體復制后的值,需要修改原結構體,就需要給方法傳入其指針。只需要在方法定義結構體參數(shù)時,加上 * 號,表示變量 p 為結構體指針。

  1. func (p *Person) growth() { 
  2.  p.age++ 

 

責任編輯:姜華 來源: 自然醒的筆記本
相關推薦

2023-07-29 15:03:29

2020-11-26 06:40:24

Go語言基礎

2020-11-30 06:17:03

Go語言

2020-12-02 08:45:36

Go語言

2020-11-23 08:54:14

Go語言結構體

2020-12-02 09:10:22

Go結構數(shù)據(jù)類型

2024-02-27 09:39:07

C語言cJSON開發(fā)

2021-11-15 06:56:46

Go語言Tag

2022-09-18 23:09:13

Go語言標準庫

2009-08-14 11:05:28

C#語言的結構體

2025-08-15 06:30:18

2021-11-02 12:19:18

Go函數(shù)結構

2023-11-21 08:03:43

語言架構偏移量

2014-02-10 15:05:37

C語言封裝

2024-10-16 09:57:52

空結構體map屬性

2021-12-20 07:59:07

Go語言結構體

2021-07-30 07:28:15

WorkerPoolGo語言

2021-04-07 09:02:49

Go 語言變量與常量

2021-04-13 07:58:42

Go語言函數(shù)

2023-03-07 10:32:34

Go語言結構體
點贊
收藏

51CTO技術棧公眾號

欧美日韩国产色视频| 国产区精品在线观看| 99热这里只有精品免费| x88av蜜桃臀一区二区| 一区二区日本视频| 91成品人片a无限观看| 天堂√中文最新版在线| 色综合中文综合网| 久热精品在线观看视频| 亚洲伊人伊成久久人综合网| 日韩在线一区二区| 欧美激情亚洲激情| av福利导福航大全在线| 亚洲国产日韩在线一区模特| 38少妇精品导航| 成人三级视频在线播放| 老司机久久99久久精品播放免费| 欧美剧情片在线观看| 九色丨porny丨| 国产精品巨作av| 亚洲高清一二三区| 国产一级片在线| 欧美亚洲三区| 国产精品日韩在线| 精品国产亚洲日本| 亚洲欧洲av在线| 伊人久久婷婷色综合98网| 亚洲视频综合| 亚洲综合在线做性| 欧美亚洲国产激情| 在线观看国产91| 日韩精品一区二区三区丰满| 中文字幕日韩一区二区不卡| 欧美亚洲高清一区| 369你懂的电影天堂| 99精品国产99久久久久久白柏 | 手机在线一区二区三区| 欧美精品videos另类日本| 色狠狠一区二区三区| 一区国产精品视频| 国产日韩电影| 国产一区二区黑人欧美xxxx| av有声小说一区二区三区| 日韩精品免费一线在线观看| 一二三四视频在线中文| 亚洲欧美第一页| 蜜桃精品在线| 久久夜色精品国产欧美乱| **日韩最新| 欧美有码在线观看| 欧美三级美国一级| 96pao国产成视频永久免费| 伊人色**天天综合婷婷| 国产美女在线精品免费观看| 亚洲国产专区| 日本不卡二区| 国产馆精品极品| 日本精品一区二区三区四区| 国产精品天干天干在观线| 成人福利在线视频| 超碰在线免费播放| 欧美日韩中文另类| 色综合久久久久综合一本到桃花网| 青青草91视频| 日本香蕉视频在线观看| 精品日本12videosex| 精品精品国产高清a毛片牛牛| 亚洲综合影视| 中国china体内裑精亚洲片| 中国在线观看免费国语版电影| 亚洲专区一二三| 五月天丁香综合久久国产 | 好男人看片在线观看免费观看国语 | 精品少妇一区二区三区在线| 国产日韩欧美高清在线| 一级毛片免费观看| 久久精品国产亚洲a| 青青青免费在线| 欧美精品一线| 天堂资源在线亚洲视频| 成人激情综合网站| 啊啊啊啊啊好爽| 欧美日韩美少妇| 免费毛片aaaaaa| 色综合久久久网| 性欧美xxx69hd高清| 欧美—级高清免费播放| 韩国av一区| 91视频最新入口| 欧美视频13p| 欧美magnet| 国产情人节一区| 国产福利一区在线| 友田真希在线| 日韩成人在线视频网站| 老司机精品在线| 亚洲少妇激情视频| 粉嫩久久久久久久极品| 精品一区久久久| 国产精品午夜免费| 在线āv视频| 一本一道久久a久久精品综合蜜臀| 成人免费视屏| 久久久久国产一区二区三区| 亚洲激情欧美| 欧美18—20岁hd第一次| 亚洲精品一区二区三区四区高清| 婷婷精品视频| 无码人妻精品一区二区三区99v| 日韩区一区二| 国产女主播一区二区| 成人不卡免费av| 国产在线视频资源| 欧美另类精品xxxx孕妇| 久久电影一区| 在线观看国产视频一二三| 亚洲天堂网站在线观看视频| 精品成人久久| 日本韩国福利视频| 日韩在线免费高清视频| 久久精品亚洲| 性网站在线播放| 97精品免费视频| 99这里只有精品视频| 国产一区二区三区欧美| 天天综合精品| 91九色单男在线观看| 欧美日韩中文字幕一区二区三区| 亚洲成人动漫在线| 欧美色爱综合网| 久久影院100000精品| 亚洲第一狼人区| 亚洲精品国产精华液| 亚洲欧美自偷自拍另类| 亚洲国产精品免费| www.综合| 国产亚洲aⅴaaaaaa毛片| 在线精品一区二区| 天堂在线视频| 国产91av在线| 91农村精品一区二区在线| 日本成年人网址| 亚洲精品一区二区三区精华液| 欧美午夜电影在线观看 | 5858s免费视频成人| 国产成人一区二区三区影院| 国产成人午夜视频网址| 99久久精品免费精品国产| 欧美性受ⅹ╳╳╳黑人a性爽| 99九九视频| 在线观看免费成人| 欧美日韩免费| www.成人.com| 久久青青草原| 99久久精品国产网站| 午夜不卡影院| 一区二区三区四区国产| 日韩精品一区在线| 欧美日韩国产网站| 亚洲精品永久www嫩草| 国产一区二区三区久久久 | 亚洲欧洲成人| 国产日韩欧美在线视频观看| 亚洲一二三专区| 欧州一区二区| 神马电影在线观看| 欧美精品vⅰdeose4hd| 欧美久久九九| 国产在线网站| 欧美高清视频一区| 精品嫩草影院久久| 久久精品国产一区二区三| 色是在线视频| 国产在线精品91| 69久久夜色精品国产69| 亚洲黄色性网站| 欧美黄色aaaa| av文字幕在线观看| 激情五月五月婷婷| 在线中文字幕日韩| 欧美激情一二三区| av亚洲在线观看| 日本高清中文字幕在线| 伊人久久久久久久久久久| 成人在线一区二区三区| 自拍偷拍欧美日韩| h片免费观看| 国产精品入口免费| 日韩黄色高清视频| 国产视频亚洲色图| 天天做天天爱天天综合网| www.欧美日本韩国| 久久99久久99精品| 91成品人片a无限观看| 欧美日韩中文字幕一区二区| 激情六月婷婷久久| 久久国产精品免费精品3p| 色视频在线看| 亚洲第一页在线视频| 欧美激情啊啊啊|