欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

golang的結構體-創(chuàng)新互聯(lián)

這篇文章將為大家詳細講解有關golang的結構體,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

10年積累的成都網(wǎng)站設計、做網(wǎng)站經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計制作后付款的網(wǎng)站建設流程,更有鳳縣免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

定義:是一種聚合的數(shù)據(jù)類型,是由零個或多個任意類型的值聚合成的實體。

成員:每個值稱為結構體的成員。

示例:

用結構體的經(jīng)典案例處理公司的員工信息,每個員工信息包含一個唯一的員工編號、員工的名字、家庭住址、出生日期、工作崗位、薪資、上級領導等等。所有的這些信息都需要綁定到一個實體中,可以作為一個整體單元被復制,作為函數(shù)的參數(shù)或返回值,或者是被存儲到數(shù)組中,等等。

定義結構體:

type Employee struct {
    ID        int
    Name      string
    Address   string
    DoB       time.Time
    Position  string
    Salary    int
    ManagerID int
}

定義變量:

var dilbert Employee

訪問成員:

dilbert.Salary -= 5000

取成員地址:

position := &dilbert.Position
*position = "Senior " + *position

點操作符與指向結構體的指針:

var employeeOfTheMonth *Employee = &dilbert
employeeOfTheMonth.Position += " (proactive team player)"

成員定義順序:

通常一行對應一個結構體成員,成員的名字在前類型在后,不過如果相鄰的成員類型如果相同的話可以被合并到一行,就像下面的Name和Address成員那樣

type Employee struct {
    ID            int
    Name, Address string
    DoB           time.Time
    Position      string
    Salary        int
    ManagerID     int
}

成員命名規(guī)則:

如果結構體成員名字是以大寫字母開頭的,那么該成員就是導出的;這是Go語言導出規(guī)則決定的。一個結構體可能同時包含導出和未導出的成員。

導出含義:在其他包中可進行讀寫。

一個命名為S的結構體類型將不能再包含S類型的成員:因為一個聚合的值不能包含它自身。(該限制同樣適應于數(shù)組。)但是S類型的結構體可以包含*S指針類型的成員,這可以讓我們創(chuàng)建遞歸的數(shù)據(jù)結構,比如鏈表和樹結構等。

type tree struct {
    value       int
    left, right *tree
}

結構體面值:

可以指定每個成員的值。

type Point struct{ X, Y int }
p := Point{1, 2}

上面的是第一種寫法,要求以結構體成員定義的順序為每個結構體成員指定一個面值。還可以:

anim := gif.GIF{LoopCount: nframes}

以成員名字和相應的值來初始化,可以包含部分或全部的成員;在這種形式的結構體面值寫法中,如果成員被忽略的話將默認用零值。因為,提供了成員的名字,所有成員出現(xiàn)的順序并不重要。

注意:兩種不同形式的寫法不能混合使用。

結構體嵌入和匿名成員:

type Point struct {
    X, Y int
}

type Circle struct {
    Center Point
    Radius int
}

type Wheel struct {
    Circle Circle
    Spokes int
}

訪問每個成員:

var w Wheel
w.Circle.Center.X = 8
w.Circle.Center.Y = 8
w.Circle.Radius = 5
w.Spokes = 20

在次簡化結構體定義:

type Circle struct {
    Point
    Radius int
}

type Wheel struct {
    Circle
    Spokes int
}

得意于匿名嵌入的特性,我們可以直接訪問葉子屬性而不需要給出完整的路徑:

var w Wheel
w.X = 8            // equivalent to w.Circle.Point.X = 8
w.Y = 8            // equivalent to w.Circle.Point.Y = 8
w.Radius = 5       // equivalent to w.Circle.Radius = 5
w.Spokes = 20

結構體字面值必須遵循形狀類型聲明時的結構,所以只能用下面的兩種語法,它們彼此是等價的:

w = Wheel{Circle{Point{8, 8}, 5}, 20}

w = Wheel{
    Circle: Circle{
        Point:  Point{X: 8, Y: 8},
        Radius: 5,
    },
    Spokes: 20, // NOTE: trailing comma necessary here (and at Radius)
}

結構體tag:

在結構體聲明中,Year和Color成員后面的字符串面值是結構體成員Tag

type Movie struct {
    Title  string
    Year   int  `json:"released"`
    Color  bool `json:"color,omitempty"`
    Actors []string
}

var movies = []Movie{
    {Title: "Casablanca", Year: 1942, Color: false,
        Actors: []string{"Humphrey Bogart", "Ingrid Bergman"}},
    {Title: "Cool Hand Luke", Year: 1967, Color: true,
        Actors: []string{"Paul Newman"}},
    {Title: "Bullitt", Year: 1968, Color: true,
        Actors: []string{"Steve McQueen", "Jacqueline Bisset"}},
    // ...
}

這樣的數(shù)據(jù)結構特別適合JSON格式,并且在兩種之間相互轉換也很容易。將一個Go語言中類似movies的結構體slice轉為JSON的過程叫編組(marshaling)。編組通過調(diào)用json.Marshal函數(shù)完成:

data, err := json.Marshal(movies)
if err != nil {
    log.Fatalf("JSON marshaling failed: %s", err)
}
fmt.Printf("%s\n", data)

Marshal函數(shù)返還一個編碼后的字節(jié)slice,包含很長的字符串,并且沒有空白縮進;我們將它折行以便于顯示:

[{"Title":"Casablanca","released":1942,"Actors":["Humphrey Bogart","Ingr
id Bergman"]},{"Title":"Cool Hand Luke","released":1967,"color":true,"Ac
tors":["Paul Newman"]},{"Title":"Bullitt","released":1968,"color":true,"
Actors":["Steve McQueen","Jacqueline Bisset"]}]

其中Year名字的成員在編碼后變成了released,還有Color成員編碼后變成了小寫字母開頭的color。這是因為構體成員Tag所導致的。一個構體成員Tag是和在編譯階段關聯(lián)到該成員的元信息字符串:

Year  int  `json:"released"`
Color bool `json:"color,omitempty"`

結構體的成員Tag可以是任意的字符串面值,但是通常是一系列用空格分隔的key:"value"鍵值對序列;因為值中含義雙引號字符,因此成員Tag一般用原生字符串面值的形式書寫。

關于golang的結構體就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

標題名稱:golang的結構體-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://aaarwkj.com/article2/dgdoic.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、移動網(wǎng)站建設、外貿(mào)網(wǎng)站建設、面包屑導航網(wǎng)站內(nèi)鏈、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司
欧美性生活真实的视频| 久久人妻一区二区三区免费| 白白在线观看网站看看亚洲| 欧美精品国产精品久久| 丰满人妻二区三区性色| 欧美精品日韩中文字幕在| 国产精品亚洲av性色| 日本一区二区三区在线观看视频| 亚洲中文字幕高清无二区| 五月开心婷婷中文字幕| 无人码人妻一区二区三区免| 在线观看高清欧美国产视频| 亚洲av第一区综合激情久久久| 日韩在线欧美在线一区二区| 欧美一区二区专区在线| 蜜桃视频国产在线观看| 久久99精品久久久子伦| 国产精品三级玖玖玖电影| 在线播放av男人的天堂| 日韩欧美人妻一二三四区| 精品人妻一区二区在线99| 久久精品人妻一区二区| 国产91精品在线观看| 国产欧美日韩一区二区三区四区| 午夜18禁毛片免费看| 日本av电影一区二区三区四区| 高清不卡日本一区二区| 一区二区三区毛片观看| 亚洲一区成人精品在线| 免费午夜福利一区二区| 亚洲av综合色区一区| 五月婷婷六月丁香俺来也| 蜜桃视频在线观看视频免费 | 中文字幕精品免费日韩在线| 国产熟女精品自拍嫩草| 五月婷婷色丁香综合激情| 成人免费视频观看国产| 日韩精品欧美成人高清一区二区 | 中文字幕av二区三区人妻| 中文字幕一区二区久久综合| 蜜臀91精品视频在线观看|