亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > Go語言-為什么返回值為接口類型,卻返回結構體

Go語言-為什么返回值為接口類型,卻返回結構體

熱門標簽:壽光微信地圖標注 電話機器人軟件免費 阿克蘇地圖標注 百度地圖標注后傳給手機 涿州代理外呼系統 外呼系統顯本地手機號 excel地圖標注分布數據 評價高的400電話辦理 外呼系統用什么卡

最近由于項目需求,閱讀一些Go語言編寫的項目的源代碼,在某一個函數中發現了一個奇怪的現象:一個函數的返回值類型聲明的是一個接口的類型,但是實際在函數體內返回的卻是一個結構體類型的對象。

這個現象對于新手的我來說很是費解。在經過一些資料的查閱之后,自己得到了如下的解釋:

一個結構體實現了一個接口,那么函數中返回值類型為接口時,就應該返回這個結構體。

下面舉一個例子來說明:

package main
import (
	"fmt"
)
/**
Shape接口定義兩個函數:
area() :計算面積
circumference() :計算周長
*/
type Shape interface {
	area() float64
	circumference() float64
}
//結構體正方形,屬性邊長
type square struct {
	length float64
}
//方法area,由正方形結構體實現
func (s square) area()  float64 {
	sarea := s.length * s.length
	return sarea
}
//方法circumference,由正方形結構體實現
func (s square) circumference()  float64 {
	scircumference := s.length * 4
	return scircumference
}
func getarea(len float64) Shape {
	s := square{
		length:4,
	}
	fmt.Println("正方形的面積為:",s.area())
	fmt.Println("正方形的周長為:",s.circumference())
	return s
}
func main() {
	getarea(4)
}

或者另一個版本:

package main
import (
	"fmt"
)
/**
Shape接口定義兩個函數:
area() :計算面積
circumference() :計算周長
*/
type Shape interface {
	area() float64
	circumference() float64
}
//結構體正方形,屬性邊長
type square struct {
	length float64
}
//方法area,由正方形結構體實現
func (s *square) area()  float64 {
	sarea := s.length * s.length
	return sarea
}
//方法circumference,由正方形結構體實現
func (s *square) circumference()  float64 {
	scircumference := s.length * 4
	return scircumference
}
func getarea(len float64) Shape {
	s := square{
		length:4,
	}
	fmt.Println("正方形的面積為:",s.area())
	fmt.Println("正方形的周長為:",s.circumference())
	return s
}
func main() {
	getarea(4)
}

這兩個代碼的區別就是前者使用了值傳遞,后者使用了指針傳遞。由于這里沒有改變結構體中的屬性值,所以兩種方法在這樣的應用場景下,沒有什么區別,下面來解釋一下這些簡單的demo:

首先我定義了一個Shape接口,里面有兩個待實現的方法area() :計算面積 和 circumference() :計算周長

然后定義了一個正方形結構體,里面只有一個邊長屬性。

然后使用正方形結構體實現這個Shape接口

接著我們就可以進入正題,試驗我們標題的問題了,使用Shape接口類型作為返回值,但是在函數體內實際的返回值是正方形結構體。

這是Go的一種語法,但實際的作用或者為是什么這樣寫,我還沒有弄清楚,但是通過以上這個實實在在的例子,關于為什么返回值類型和實際返回的不一樣有了一定的理解。

補充:Go語言-結構體和接口

結構體和接口

接口嵌套

接口中允許嵌套其他接口,效果等同于復制被嵌套的接口中的方法

當前的接口中不允許有與嵌入的接口相同的方法

方法相同的接口相等同

接口不能為空,否則等同于空接口

結構體嵌套

結構體中的匿名成員內的成員和方法會被嵌套到當前結構體中

當前結構體中允許有與被嵌套結構體相同的成員和方法,且會覆蓋被嵌套的結構體的成員和方法

兩個被嵌套的結構體有相同的成員或方法,會發生沖突

有時候編輯器不會提示,但會產生運行時錯誤

成員名稱和類型完全相同的結構體

如果其中一個是匿名的,可以直接賦值或判斷相等

類型名不同可以進行類型轉換,不可以直接賦值或判斷相等

方法的接收器只能是在當前包中指定名稱的類型,不能是原生類型、復合類型、其他包中的類型

重新命名的結構體與原結構體成員完全相同(包括tag),但是沒有原來的方法

接口實現

一個類型實現了接口的所有方法,就是實現了接口,不管類型和接口之間是否有關聯

方法的接收器可以是這個類型或者這個類型的指針類型

指針類型的接收器可以被修改成員

非指針類型的實例直接調用指針類型接收器的方法,會遇到無法調用指針方法,無法獲取地址的問題

指針類型的實例調用非指針類型接收器的方法不會出現問題

將實例賦值給變量再調用不會出現問題

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Go語言之結構體與方法
  • Go語言基礎語法之結構體及方法詳解
  • go語言通過反射創建結構體、賦值、并調用對應的操作
  • go語言使用第三方包 json化結構體操作示例
  • 關于Go 空結構體的 3 種使用場景

標簽:雞西 蘭州 重慶 吐魯番 梅河口 汕頭 銅川 欽州

巨人網絡通訊聲明:本文標題《Go語言-為什么返回值為接口類型,卻返回結構體》,本文關鍵詞  語言,為什么,返回,值,為,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go語言-為什么返回值為接口類型,卻返回結構體》相關的同類信息!
  • 本頁收集關于Go語言-為什么返回值為接口類型,卻返回結構體的相關信息資訊供網民參考!
  • 推薦文章
    国产麻豆精品免费视频| 亚洲天堂免费观看| 九九精品影院| 深夜做爰性大片中文| 久久国产一久久高清| 可以免费看污视频的网站| 韩国妈妈的朋友在线播放| 美女免费毛片| 韩国三级视频网站| 尤物视频网站在线观看| 国产成a人片在线观看视频| 一级片片| 久草免费在线色站| 天天做日日干| 日韩一级黄色| 国产成人精品影视| 青青青草影院 | 精品视频在线看| 国产一区二区精品久久91| 精品视频一区二区| 天天色色色| 在线观看成人网| 一 级 黄 中国色 片| 麻豆网站在线看| 美女免费精品视频在线观看| 欧美激情影院| 精品视频在线看| 成人影院一区二区三区| 亚欧视频在线| 91麻豆爱豆果冻天美星空| 午夜家庭影院| 久久国产一久久高清| 国产a视频| 国产成人精品综合| 亚洲 欧美 91| 天天做日日爱| 国产成人精品综合| 九九干| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 精品毛片视频| 一级片片| 超级乱淫黄漫画免费| 国产极品白嫩美女在线观看看| 成人影院一区二区三区| 精品视频在线看| 日日爽天天| 999久久66久6只有精品| 国产麻豆精品免费密入口| 欧美国产日韩在线| 欧美18性精品| 人人干人人草| 欧美一区二区三区在线观看| 久久国产一区二区| 99久久精品国产免费| 亚洲 国产精品 日韩| 四虎影视库| 尤物视频网站在线| 欧美国产日韩精品| 久久国产精品只做精品| 韩国毛片| 美国一区二区三区| 久久99欧美| 午夜家庭影院| 91麻豆精品国产自产在线| 色综合久久天天综合观看| 99热精品在线| 韩国毛片免费| 日韩男人天堂| 成人免费高清视频| 国产一区二区福利久久| 国产一区二区精品在线观看| 一级女人毛片人一女人| 欧美一级视频高清片| 成人免费网站视频ww| 尤物视频网站在线| 国产视频一区在线| 精品国产一区二区三区精东影业| 99色播| 亚洲 激情| 午夜激情视频在线观看 | 日韩av东京社区男人的天堂| 国产不卡在线观看| 精品视频在线看| 日本特黄特色aaa大片免费| 久久国产精品永久免费网站| 免费一级生活片| 国产视频一区二区在线观看| 日韩免费在线观看视频| 午夜激情视频在线观看| 国产精品免费精品自在线观看| 国产视频一区在线| 中文字幕一区二区三区 精品| 精品久久久久久综合网| 91麻豆爱豆果冻天美星空| 天天做日日干| 国产极品精频在线观看| 精品视频在线看| 国产91丝袜在线播放0| 免费一级片在线| 欧美日本二区| 黄视频网站在线观看| 久久99中文字幕| 日日爽天天| 国产一区二区精品久久91| 成人免费高清视频| 国产91精品一区二区| 青青久在线视频| 韩国三级香港三级日本三级| 亚洲www美色| 国产伦理精品| 精品视频一区二区三区免费| 精品在线观看一区| 黄色短视频网站| 中文字幕一区二区三区精彩视频| 成人高清免费| 国产综合91天堂亚洲国产| 日韩专区一区| 韩国三级视频在线观看| 日本免费乱人伦在线观看| 成人影视在线播放| 国产一区二区精品久久91| 99热精品一区| 九九精品影院| 精品国产一级毛片| a级精品九九九大片免费看| 成人高清免费| 国产伦精品一区二区三区在线观看| 超级乱淫伦动漫| 国产麻豆精品高清在线播放| 国产伦精品一区三区视频| 国产极品白嫩美女在线观看看| 久久久成人影院| 欧美国产日韩久久久| 成人在免费观看视频国产| 高清一级片| 成人免费观看视频| 91麻豆国产| 午夜家庭影院| 麻豆污视频| 久草免费在线观看| 欧美激情一区二区三区视频 | 香蕉视频三级| 久久精品道一区二区三区| 国产福利免费视频| 九九热国产视频| 久久久成人网| 四虎影视库国产精品一区| 国产91丝袜在线播放0| 色综合久久天天综合观看| 99久久精品国产国产毛片| 国产极品白嫩美女在线观看看| 成人免费观看男女羞羞视频| 久久99欧美| 国产亚洲男人的天堂在线观看| 可以在线看黄的网站| 天天做日日爱夜夜爽| 成人免费观看的视频黄页| 成人影院久久久久久影院| 欧美激情一区二区三区在线 | 午夜精品国产自在现线拍| 国产麻豆精品免费视频| 欧美另类videosbestsex高清 | 国产视频久久久久| 99久久网站| 国产伦精品一区二区三区无广告 | 久久精品免视看国产明星| 色综合久久天天综线观看| 欧美1区| 日韩中文字幕一区| 精品国产一区二区三区精东影业 | 97视频免费在线观看| 日本特黄特色aa大片免费| 深夜做爰性大片中文| 久久精品店| 国产伦久视频免费观看 视频| 美国一区二区三区| 精品在线观看国产| 91麻豆爱豆果冻天美星空| 亚洲天堂在线播放| 亚洲 欧美 91| 91麻豆精品国产自产在线观看一区| a级毛片免费观看网站| 黄视频网站在线免费观看| 国产一区免费在线观看| 午夜久久网| 欧美激情一区二区三区视频| 日韩男人天堂| 香蕉视频久久| 高清一级片| 日韩男人天堂| 成人影视在线播放| 精品国产香蕉在线播出| 日本伦理黄色大片在线观看网站| 国产一区精品| 尤物视频网站在线| 国产国语对白一级毛片| a级毛片免费观看网站| 久久国产影院| 日韩一级黄色片| 九九九网站|