好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > golang中struct和interface的基礎使用教程

golang中struct和interface的基礎使用教程

熱門標簽:汕頭小型外呼系統 惠州電銷防封電話卡 釘釘有地圖標注功能嗎 濱州自動電銷機器人排名 鄭州亮點科技用的什么外呼系統 黃岡人工智能電銷機器人哪個好 浙江高頻外呼系統多少錢一個月 阿里云ai電話機器人 建造者2地圖標注

前言

本文主要給大家介紹了關于golang中struct和interface的相關內容,是屬于golang的基本知識,下面話不多說了,來一起看看詳細的介紹吧。

struct

struct 用來自定義復雜數據結構,可以包含多個字段(屬性),可以嵌套;go中的struct類型理解為類,可以定義方法,和函數定義有些許區別;struct類型是值類型。

struct定義

type User struct {
 Name string
 Age int32
 mess string
}
var user User
var user1 *User = User{}
var user2 *User = new(User)

struct的方法

在go語言中,我們可以為自定義類型定義類型相關的方法,比如:

func (p *player) Name() string{
 return p.name
}

上面的代碼為player這個自定義類型聲明了一個名為Name的方法,該方法返回一個string。值得注意的是(p *player)這段代碼指定了我們是為player創建方法,并將調用該方法的實例指針當作變量p傳入該函數,如果沒有(p *player)這段代碼,這個方法就變成了一個普通的全局函數。

struct的嵌入(Embedding)

go語言中的“繼承”和其他語言中的繼承有很大區別,比如:

type player struct{
 User
}

這是一種“繼承”的寫法,在go語言中這種方式叫做“嵌入”(embed),此時player類型就擁有了User類型的Name等變量

struct的tag

這種方式主要是用在xml,json和struct間相互轉換,非常方便直觀,比如接口給的參數一般是json傳過來,但是內部我們要轉為struct再進行處理。

例子:

import "encoding/json"
type User struct {
 Name string `json:"userName"`
 Age int `json:"userAge"`
}
func main() {
 var user User
 user.Name = "nick"
 user.Age = 18 
 conJson, _ := json.Marshal(user)
 fmt.Println(string(conJson)) //{"userName":"nick","userAge":0}
}

interface

golang不支持完整的面向對象思想,它沒有繼承,多態則完全依賴接口實現。golang只能模擬繼承,其本質是組合,只不過golang語言為我們提供了一些語法糖使其看起來達到了繼承的效果。Golang中的接口,不需要顯示的實現。Interface類型可以定義一組方法,但是這些不需要實現。并且interface不能包含任何變量。只要一個變量,含有接口類型中的所有方法,那么這個變量就實現這個接口。因此,golang中沒有implement類似的關鍵字;如果一個變量含有了一個interface類型的多個方法,那么這個變量就實現了多個接口;如果一個變量只含有了一個interface的方部分方法,那么這個變量沒有實現這個接口。

interface的定義

interface類型默認是一個指針。

例子:

Interface定義

type Car interface {
 NameGet() string
 Run(n int)
 Stop()
}

空接口 Interface{}:空接口沒有任何方法,所以所有類型都實現了空接口。

var a int
var b interface{} //空接口
b = a

interface的多態

一種事物的多種形態,都可以按照統一的接口進行操作。這種方式是用的最多的,有點像c++中的類繼承。

例子:

type Item interface {
 Name() string
 Price() float64
}
 
type VegBurger struct {
}
 
func (r *VegBurger) Name() string{
 return "vegburger"
}
 
func (r *VegBurger) Price() float64{
 return 1.5
}
 
type ChickenBurger struct {
}
 
func (r *ChickenBurger) Name() string{
 return "chickenburger"
}
 
func (r *ChickenBurger) Price() float64{
 return 5.5
}

Interface嵌套

一個接口可以嵌套在另外的接口。即需要實現2個接口的方法。在下面的例子中Used就包含了Car這個接口的所有方法。
例子:

type Car interface {
 NameGet() string
 Run(n int)
 Stop()
}
type Used interface {
 Car
 Cheap()
}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • 使用go的interface案例實現多態范式操作
  • Go語言實現類似c++中的多態功能實例
  • golang語言如何將interface轉為int, string,slice,struct等類型
  • golang基礎之Interface接口的使用
  • golang struct 實現 interface的方法
  • Go之interface的具體使用
  • Go語言中你不知道的Interface詳解
  • golang中interface接口的深度解析
  • 淺談Go語言多態的實現與interface使用

標簽:滄州 晉中 泰安 駐馬店 東營 瀘州 昭通 阿壩

巨人網絡通訊聲明:本文標題《golang中struct和interface的基礎使用教程》,本文關鍵詞  golang,中,struct,和,interface,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang中struct和interface的基礎使用教程》相關的同類信息!
  • 本頁收集關于golang中struct和interface的基礎使用教程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产99久久久欧美黑人 | 老公帮我添添的水好多受不了视频| 5060午夜理伦三级| 羞羞漫画雷电将军被黄漫免费| 国产美女叼嘿视频免费看| 莉娜安德德森一级A片| 51精品视频在线视频观看| 久久免费观看国产精品88av| 手伸进她的衣服里揉捏她的胸| 大胸美女网站全是黄的| 午夜欧美日韩| 色戒激情戏在多少分多少秒开始| 邵氏一级风流片a级| 性欧美XXXXⅩOOOO3D画| 国产一级特黄aa大片免费| 国产精品亚洲专区在线播放| 日本xxx18| 91?口爆吞精国产| 男人a天堂777| 高中生雯雯日记h| 91成人精品| 16 一18 一19 性欧美| 女人高潮被爽到呻吟mp3| 美腿的呻吟| 二级黄色片| 日韩手机视频| 欧美激情艳星办公室AV| 嗯?脱我内衣吸我奶小内裤作文| 暴露调教女友小月| 热带雨大尺度被删片段| h校园运动会yin乱比赛| 动漫女女性h黄漫图| 综合色亚洲| 国产欧美久久一区二区| 欧美xxxx8888视频| 日本理论片2828电影| 美女胸又大又www黄网站| 最近韩国电影片大全在线观看| 操啊啊啊啊| 沫子漫画免费漫画页面在线看 | 叫床粗话刺激|