golang之Struct

最近在復(fù)習(xí)golang贮勃,學(xué)習(xí)的東西,如果不使用苏章,很快就會(huì)忘記寂嘉。所以奏瞬,準(zhǔn)備復(fù)習(xí)完golang,做一個(gè)練手的小項(xiàng)目泉孩,加深對(duì)golang的學(xué)習(xí)硼端。今天開始公司,進(jìn)入封閉式開發(fā)寓搬,所以每天晚上回來(lái)珍昨,學(xué)習(xí)golang時(shí)間比較少了。所以句喷,爭(zhēng)取一天一章的學(xué)習(xí)镣典。

學(xué)習(xí)資源: https://github.com/Unknwon, 無(wú)聞唾琼,golang的大牛兄春,他的文檔網(wǎng)站很不錯(cuò)。教學(xué)也很好锡溯。golang的在線測(cè)試 https://play.golang.org赶舆,直接在瀏覽器中測(cè)試。

struct的主要內(nèi)容:

結(jié)構(gòu)體的定義和使用
使用字面量初始化
匿名結(jié)構(gòu)和字段
結(jié)構(gòu)體之間的比較和賦值
嵌入結(jié)構(gòu)
提升字段
字段屬性的訪問使用
引用傳遞和值傳遞

什么是結(jié)構(gòu)體struct祭饭?

結(jié)構(gòu)體是用戶定義的類型芜茵,表示若干個(gè)字段(Field)的集合。有時(shí)應(yīng)該把數(shù)據(jù)整合在一起倡蝙,而不是讓這些數(shù)據(jù)沒有聯(lián)系夕晓。這種情況下可以使用結(jié)構(gòu)體。就是面向?qū)ο缶幊陶Z(yǔ)言中的類class

例如悠咱,一個(gè)職員有 firstNamelastNameage 三個(gè)屬性征炼,而把這些屬性組合在一個(gè)結(jié)構(gòu)體 employee 中就很合理析既。

結(jié)構(gòu)體的聲明

type Employee struct {
    firstName string
    lastName  string
    age       int
}

在上面的代碼片段里,聲明了一個(gè)結(jié)構(gòu)體類型 Employee谆奥,它有 firstName眼坏、lastNameage 三個(gè)字段。通過(guò)把相同類型的字段聲明在同一行酸些,結(jié)構(gòu)體可以變得更加緊湊宰译。在上面的結(jié)構(gòu)體中,firstNamelastName 屬于相同的 string 類型魄懂,于是這個(gè)結(jié)構(gòu)體可以重寫為:

type Employee struct {
    firstName, lastName string
    age, salary         int
}

上面的結(jié)構(gòu)體 Employee 稱為 命名的結(jié)構(gòu)體(Named Structure)沿侈。我們創(chuàng)建了名為 Employee 的新類型,而它可以用于創(chuàng)建 Employee 類型的結(jié)構(gòu)體變量市栗。

聲明結(jié)構(gòu)體時(shí)也可以不用聲明一個(gè)新類型缀拭,這樣的結(jié)構(gòu)體類型稱為 匿名結(jié)構(gòu)體(Anonymous Structure)咳短。

var employee struct {
    firstName, lastName string
    age int
}

上述代碼片段創(chuàng)建一個(gè)匿名結(jié)構(gòu)體 employee。匿名結(jié)構(gòu)體是使用字面量直接初始化的蛛淋。

創(chuàng)建命名的結(jié)構(gòu)體

通過(guò)下面代碼咙好,我們定義了一個(gè)命名的結(jié)構(gòu)體 Employee

package main

import (  
    "fmt"
)

type Employee struct {  
    firstName, lastName string
    age, salary         int
}

func main() {

    //creating structure using field names
    emp1 := Employee{
        firstName: "youdi",
        age:       25,
        salary:    500,
        lastName:  "liang",
    }

    //creating structure without using field names
    emp2 := Employee{"hui", "liang", 26, 800}

    fmt.Println("Employee 1", emp1)
    fmt.Println("Employee 2", emp2)
}

在上述程序的第 7 行褐荷,我們創(chuàng)建了一個(gè)命名的結(jié)構(gòu)體 Employee勾效。而在第 15 行,通過(guò)指定每個(gè)字段名的值叛甫,我們定義了結(jié)構(gòu)體變量 emp1层宫。字段名的順序不一定要與聲明結(jié)構(gòu)體類型時(shí)的順序相同。在這里合溺,我們改變了 lastName 的位置卒密,將其移到了末尾。這樣做也不會(huì)有任何的問題棠赛。

在上面程序中哮奇,定義 emp2 時(shí)我們省略了字段名。在這種情況下睛约,就需要保證字段名的順序與聲明結(jié)構(gòu)體時(shí)的順序相同鼎俘。

該程序?qū)⑤敵觯?/p>

Employee 1 {youdi liang 25 500}
Employee 2 {hui liang 26 800}

創(chuàng)建匿名結(jié)構(gòu)體

package main

import (
    "fmt"
)

func main() {
    emp3 := struct {
        firstName, lastName string
        age, salary         int
    }{
        firstName: "Andreah",
        lastName:  "Nikola",
        age:       31,
        salary:    5000,
    }

    fmt.Println("Employee 3", emp3)
}

在上述程序的第 3 行,我們定義了一個(gè)匿名結(jié)構(gòu)體變量 emp3辩涝。上面我們已經(jīng)提到贸伐,之所以稱這種結(jié)構(gòu)體是匿名的,是因?yàn)樗皇莿?chuàng)建一個(gè)新的結(jié)構(gòu)體變量 em3怔揩,而沒有定義任何結(jié)構(gòu)體類型捉邢。

該程序會(huì)輸出:

Employee 3 {Andreah Nikola 31 5000}

結(jié)構(gòu)體的零值(Zero Value)

當(dāng)定義好的結(jié)構(gòu)體并沒有被顯式地初始化時(shí),該結(jié)構(gòu)體的字段將默認(rèn)賦為零值商膊。

package main

import (  
    "fmt"
)

type Employee struct {  
    firstName, lastName string
    age, salary         int
}

func main() {  
    var emp4 Employee //zero valued structure
    fmt.Println("Employee 4", emp4)
}

該程序定義了 emp4伏伐,卻沒有初始化任何值。因此 firstNamelastName 賦值為 string 的零值("")晕拆。零值是對(duì)應(yīng)類型的零值藐翎。 而 agesalary 賦值為 int 的零值(0)。該程序會(huì)輸出:

Employee 4 { 0 0}

當(dāng)然還可以為某些字段指定初始值实幕,而忽略其他字段吝镣。這樣,忽略的字段名會(huì)賦值為零值昆庇。

package main

import (  
    "fmt"
)

type Employee struct {  
    firstName, lastName string
    age, salary         int
}

func main() {  
    emp5 := Employee{
        firstName: "John",
        lastName:  "Paul",
    }
    fmt.Println("Employee 5", emp5)
}

在上面程序中的第 14 行和第 15 行末贾,我們初始化了 firstNamelastName,而 agesalary 沒有進(jìn)行初始化凰锡。因此 agesalary 賦值為零值未舟。該程序會(huì)輸出:

Employee 5 {John Paul 0 0}

訪問結(jié)構(gòu)體的字段

點(diǎn)號(hào)操作符 . 用于訪問結(jié)構(gòu)體的字段圈暗。

package main

import (  
    "fmt"
)

type Employee struct {  
    firstName, lastName string
    age, salary         int
}

func main() {  
    emp6 := Employee{"Sam", "Anderson", 55, 6000}
    fmt.Println("First Name:", emp6.firstName)
    fmt.Println("Last Name:", emp6.lastName)
    fmt.Println("Age:", emp6.age)
    fmt.Printf("Salary: $%d", emp6.salary)
}

上面程序中的 emp6.firstName 訪問了結(jié)構(gòu)體 emp6 的字段 firstName。該程序輸出:

First Name: Sam  
Last Name: Anderson  
Age: 55  
Salary: $6000

還可以創(chuàng)建零值的 struct裕膀,以后再給各個(gè)字段賦值员串。

package main

import (
    "fmt"
)

type Employee struct {  
    firstName, lastName string
    age, salary         int
}

func main() {  
    var emp7 Employee
    emp7.firstName = "Jack"
    emp7.lastName = "Adams"
    fmt.Println("Employee 7:", emp7)
}

在上面程序中,我們定義了 emp7昼扛,接著給 firstNamelastName 賦值寸齐。該程序會(huì)輸出:

Employee 7: {Jack Adams 0 0}

結(jié)構(gòu)體的指針

還可以創(chuàng)建指向結(jié)構(gòu)體的指針。

package main

import (  
    "fmt"
)

type Employee struct {  
    firstName, lastName string
    age, salary         int
}

func main() {  
    emp8 := &Employee{"Sam", "Anderson", 55, 6000}
    fmt.Println("First Name:", (*emp8).firstName)
    fmt.Println("Age:", (*emp8).age)
}

在上面程序中抄谐,emp8 是一個(gè)指向結(jié)構(gòu)體 Employee 的指針渺鹦。(*emp8).firstName 表示訪問結(jié)構(gòu)體 emp8firstName 字段。該程序會(huì)輸出:

First Name: Sam
Age: 55

Go 語(yǔ)言允許我們?cè)谠L問 firstName 字段時(shí)蛹含,可以使用 emp8.firstName 來(lái)代替顯式的解引用 (*emp8).firstName毅厚。

package main

import (  
    "fmt"
)

type Employee struct {  
    firstName, lastName string
    age, salary         int
}

func main() {  
    emp8 := &Employee{"Sam", "Anderson", 55, 6000}
    fmt.Println("First Name:", emp8.firstName)
    fmt.Println("Age:", emp8.age)
}

在上面的程序中,我們使用 emp8.firstName 來(lái)訪問 firstName 字段浦箱,該程序會(huì)輸出:

First Name: Sam
Age: 55

匿名字段

當(dāng)我們創(chuàng)建結(jié)構(gòu)體時(shí)吸耿,字段可以只有類型,而沒有字段名酷窥。這樣的字段稱為匿名字段(Anonymous Field)咽安。

以下代碼創(chuàng)建一個(gè) Person 結(jié)構(gòu)體,它含有兩個(gè)匿名字段 stringint蓬推。

type Person struct {  
    string
    int
}

我們接下來(lái)使用匿名字段來(lái)編寫一個(gè)程序妆棒。

package main

import (  
    "fmt"
)

type Person struct {  
    string
    int
}

func main() {  
    p := Person{"Naveen", 50}
    fmt.Println(p)
}

在上面的程序中,結(jié)構(gòu)體 Person 有兩個(gè)匿名字段沸伏。p := Person{"Naveen", 50} 定義了一個(gè) Person 類型的變量糕珊。該程序輸出 {Naveen 50}

雖然匿名字段沒有名稱毅糟,但其實(shí)匿名字段的名稱就默認(rèn)為它的類型放接。比如在上面的 Person 結(jié)構(gòu)體里,雖說(shuō)字段是匿名的留特,但 Go 默認(rèn)這些字段名是它們各自的類型。所以 Person 結(jié)構(gòu)體有兩個(gè)名為 stringint 的字段玛瘸。

package main

import (  
    "fmt"
)

type Person struct {  
    string
    int
}

func main() {  
    var p1 Person
    p1.string = "naveen"
    p1.int = 50
    fmt.Println(p1)
}

在上面程序中蜕青,我們?cè)L問了 Person 結(jié)構(gòu)體的匿名字段,我們把字段類型作為字段名糊渊,分別為 "string" 和 "int"右核。上面程序的輸出如下:

{naveen 50}

嵌套結(jié)構(gòu)體(Nested Structs)

結(jié)構(gòu)體的字段有可能也是一個(gè)結(jié)構(gòu)體。這樣的結(jié)構(gòu)體稱為嵌套結(jié)構(gòu)體渺绒。

package main

import (  
    "fmt"
)

type Address struct {  
    city, state string
}
type Person struct {  
    name string
    age int
    address Address
}

func main() {  
    var p Person
    p.name = "Naveen"
    p.age = 50
    p.address = Address {
        city: "Chicago",
        state: "Illinois",
    }
    fmt.Println("Name:", p.name)
    fmt.Println("Age:",p.age)
    fmt.Println("City:",p.address.city)
    fmt.Println("State:",p.address.state)
}

上面的結(jié)構(gòu)體 Person 有一個(gè)字段 address贺喝,而 address 也是結(jié)構(gòu)體菱鸥。該程序輸出:

Name: Naveen  
Age: 50  
City: Chicago  
State: Illinois

提升字段(Promoted Fields)

如果是結(jié)構(gòu)體中有匿名的結(jié)構(gòu)體類型字段,則該匿名結(jié)構(gòu)體里的字段就稱為提升字段躏鱼。這是因?yàn)樘嵘侄尉拖袷菍儆谕獠拷Y(jié)構(gòu)體一樣氮采,可以用外部結(jié)構(gòu)體直接訪問。我知道這種定義很復(fù)雜染苛,所以我們直接研究下代碼來(lái)理解吧鹊漠。

type Address struct {  
    city, state string
}
type Person struct {  
    name string
    age  int
    Address
}

在上面的代碼片段中,Person 結(jié)構(gòu)體有一個(gè)匿名字段 Address茶行,而 Address 是一個(gè)結(jié)構(gòu)體∏牛現(xiàn)在結(jié)構(gòu)體 Addresscitystate 兩個(gè)字段,訪問這兩個(gè)字段就像在 Person 里直接聲明的一樣畔师,因此我們稱之為提升字段娶靡。

package main

import (
    "fmt"
)

type Address struct {
    city, state string
}
type Person struct {
    name string
    age  int
    Address
}

func main() {  
    var p Person
    p.name = "Naveen"
    p.age = 50
    p.Address = Address{
        city:  "Chicago",
        state: "Illinois",
    }
    fmt.Println("Name:", p.name)
    fmt.Println("Age:", p.age)
    fmt.Println("City:", p.city) //city is promoted field
    fmt.Println("State:", p.state) //state is promoted field
}

在上面代碼中的第 26 行和第 27 行,我們使用了語(yǔ)法 p.cityp.state看锉,訪問提升字段 citystate 就像它們是在結(jié)構(gòu)體 p中聲明的一樣姿锭。該程序會(huì)輸出:

Name: Naveen  
Age: 50  
City: Chicago  
State: Illinois

導(dǎo)出結(jié)構(gòu)體和字段

如果結(jié)構(gòu)體名稱以大寫字母開頭,則它是其他包可以訪問的導(dǎo)出類型(Exported Type)度陆。同樣艾凯,如果結(jié)構(gòu)體里的字段首字母大寫,它也能被其他包訪問到懂傀。

讓我們使用自定義包趾诗,編寫一個(gè)程序來(lái)更好地去理解它。

在你的 Go 工作區(qū)的 src 目錄中蹬蚁,創(chuàng)建一個(gè)名為 structs 的文件夾恃泪。另外在 structs 中再創(chuàng)建一個(gè)目錄 computer

computer 目錄中犀斋,在名為 spec.go 的文件中保存下面的程序贝乎。

package computer

type Spec struct { //exported struct  
    Maker string //exported field
    model string //unexported field
    Price int //exported field
}

上面的代碼片段中,創(chuàng)建了一個(gè) computer 包叽粹,里面有一個(gè)導(dǎo)出結(jié)構(gòu)體類型 Spec览效。Spec 有兩個(gè)導(dǎo)出字段 MakerPrice,和一個(gè)未導(dǎo)出的字段 model虫几。接下來(lái)我們會(huì)在 main 包中導(dǎo)入這個(gè)包锤灿,并使用 Spec 結(jié)構(gòu)體。

package main

import "structs/computer"  
import "fmt"

func main() {  
    var spec computer.Spec
    spec.Maker = "apple"
    spec.Price = 50000
    fmt.Println("Spec:", spec)
}

包結(jié)構(gòu)如下所示:

src  
   structs
        computer
            spec.go
        main.go

在上述程序的第 3 行辆脸,我們導(dǎo)入了 computer 包但校。在第 8 行和第 9 行,我們?cè)L問了結(jié)構(gòu)體 Spec 的兩個(gè)導(dǎo)出字段 MakerPrice啡氢。執(zhí)行命令 go install structsworkspacepath/bin/structs状囱,運(yùn)行該程序术裸。

如果我們?cè)噲D訪問未導(dǎo)出的字段 model,編譯器會(huì)報(bào)錯(cuò)亭枷。將 main.go 的內(nèi)容替換為下面的代碼袭艺。

package main

import "structs/computer"  
import "fmt"

func main() {  
    var spec computer.Spec
    spec.Maker = "apple"
    spec.Price = 50000
    spec.model = "Mac Mini"
    fmt.Println("Spec:", spec)
}

在上面程序,我們?cè)噲D訪問未導(dǎo)出的字段 model奶栖。如果運(yùn)行這個(gè)程序匹表,編譯器會(huì)產(chǎn)生錯(cuò)誤:spec.model undefined (cannot refer to unexported field or method model)

結(jié)構(gòu)體相等性(Structs Equality)

結(jié)構(gòu)體是值類型宣鄙。如果它的每一個(gè)字段都是可比較的袍镀,則該結(jié)構(gòu)體也是可比較的。如果兩個(gè)結(jié)構(gòu)體變量的對(duì)應(yīng)字段相等冻晤,則這兩個(gè)變量也是相等的苇羡。

package main

import (  
    "fmt"
)

type name struct {  
    firstName string
    lastName string
}


func main() {  
    name1 := name{"Steve", "Jobs"}
    name2 := name{"Steve", "Jobs"}
    if name1 == name2 {
        fmt.Println("name1 and name2 are equal")
    } else {
        fmt.Println("name1 and name2 are not equal")
    }

    name3 := name{firstName:"Steve", lastName:"Jobs"}
    name4 := name{}
    name4.firstName = "Steve"
    if name3 == name4 {
        fmt.Println("name3 and name4 are equal")
    } else {
        fmt.Println("name3 and name4 are not equal")
    }
}

在上面的代碼中,結(jié)構(gòu)體類型 name 包含兩個(gè) string 類型鼻弧。由于字符串是可比較的设江,因此可以比較兩個(gè) name 類型的結(jié)構(gòu)體變量。

上面代碼中 name1name2 相等攘轩,而 name3name4 不相等叉存。該程序會(huì)輸出:

name1 and name2 are equal  
name3 and name4 are not equal

如果結(jié)構(gòu)體包含不可比較的字段,則結(jié)構(gòu)體變量也不可比較度帮。

package main

import (  
    "fmt"
)

type image struct {  
    data map[int]int
}

func main() {  
    image1 := image{data: map[int]int{
        0: 155,
    }}
    image2 := image{data: map[int]int{
        0: 155,
    }}
    if image1 == image2 {
        fmt.Println("image1 and image2 are equal")
    }
}

在上面代碼中歼捏,結(jié)構(gòu)體類型 image 包含一個(gè) map 類型的字段。由于 map 類型是不可比較的笨篷,因此 image1image2 也不可比較瞳秽。如果運(yùn)行該程序,編譯器會(huì)報(bào)錯(cuò):main.go:18: invalid operation: image1 == image2 (struct containing map[int]int cannot be compared)率翅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末练俐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子冕臭,更是在濱河造成了極大的恐慌腺晾,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辜贵,死亡現(xiàn)場(chǎng)離奇詭異丘喻,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)念颈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)连霉,“玉大人榴芳,你說(shuō)我怎么就攤上這事嗡靡。” “怎么了窟感?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵讨彼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我柿祈,道長(zhǎng)哈误,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任躏嚎,我火速辦了婚禮蜜自,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卢佣。我一直安慰自己重荠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布虚茶。 她就那樣靜靜地躺著戈鲁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘹叫。 梳的紋絲不亂的頭發(fā)上婆殿,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音罩扇,去河邊找鬼婆芦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛暮蹂,可吹牛的內(nèi)容都是我干的寞缝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了撩匕?” 一聲冷哼從身側(cè)響起拓颓,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盟迟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浓体,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辈讶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片命浴。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出生闲,到底是詐尸還是另有隱情媳溺,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布碍讯,位于F島的核電站悬蔽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏捉兴。R本人自食惡果不足惜蝎困,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望倍啥。 院中可真熱鬧禾乘,春花似錦、人聲如沸逗栽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)彼宠。三九已至鳄虱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凭峡,已是汗流浹背拙已。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摧冀,地道東北人倍踪。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像索昂,于是被迫代替她去往敵國(guó)和親建车。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理椒惨,服務(wù)發(fā)現(xiàn)缤至,斷路器,智...
    卡卡羅2017閱讀 134,668評(píng)論 18 139
  • 一康谆、Java 簡(jiǎn)介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚_t_閱讀 4,195評(píng)論 1 44
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法领斥,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法沃暗,繼承相關(guān)的語(yǔ)法月洛,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,644評(píng)論 18 399
  • 結(jié)構(gòu)體 結(jié)構(gòu)體(struct)是用戶自定義的類型孽锥,代表若干字段的集合嚼黔。有時(shí)將多個(gè)數(shù)據(jù)看做一個(gè)整體要比單獨(dú)使用這些數(shù)...
    與蟒唯舞閱讀 920評(píng)論 0 2
  • 我要給你講一個(gè)尋常的故事 我是個(gè)南方人细层,過(guò)著就算是沒有羽絨服也能湊合的冬天。 她是個(gè)北方人唬涧,至少相對(duì)于我而言今艺,過(guò)著...
    TaoTie閱讀 526評(píng)論 0 0