真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Go中的"類(lèi)"之struct的初體驗(yàn)

// 其他的包。。。。。。。。。。。。。。。。。
//teacher01只能在本文件引用,英文首字母小寫(xiě)
type teacher01 struct {
    Id     int
    Name   string
    Course string
    Sex    string
}

//Teacher02可以在任意文件引用,英文首字母大寫(xiě)
type Teacher02 struct {
    ID     int
    Name   string
    Course string
    sex    string
}

//備注:
//1)訪問(wèn)teacher01的時(shí)候,err, cannot refer to unexported name 包名.teacher01
//2)訪問(wèn)Teacher02.sex的時(shí)候,err, implicit assignment of unexported field 'sex' in 包名.Teacher02 literal
//3) 修改Teacher02.sex的時(shí)候, 修改sex報(bào)錯(cuò),//err, 結(jié)構(gòu)體變量.sex undefined (cannot refer to unexported field or method sex)
// code_015_struct_firstTime project main.go
package main

import (
    "fmt"
)

type Student struct {
    id   int
    name string
    sex  byte
    age  int
    addr string
}

func printStudentValue(tmp Student) {
    tmp.id = 250
    fmt.Println("printStudentValue tmp =", tmp)
}

func main() {
    /*
        1)重要的事情說(shuō)三遍:Go語(yǔ)言中沒(méi)有封裝、繼承、多態(tài)等概念,但同樣通過(guò)別的方式實(shí)現(xiàn)這些特性.
        封裝:通過(guò)方法實(shí)現(xiàn);繼承:通過(guò)匿名字段實(shí)現(xiàn);多態(tài):通過(guò)接口實(shí)現(xiàn)
        2)如果結(jié)構(gòu)體的全部成員都是可以比較的,那么結(jié)構(gòu)體也是可以比較的,那樣的話兩個(gè)結(jié)構(gòu)體將可以使用 == 或 != 運(yùn)算符進(jìn)行比較,但不支持 > 或 < 。
        3)
    */

    //1)順序初始化。
    var s1 Student = Student{1, "ck_god", 0, 27, "sz"}
    s2 := Student{2, "god_girl", 1, 23, "sz"}
    //s3 := Student{3, "stranger", "m", 20, "sz"} //報(bào)錯(cuò), 性別為byte類(lèi)型的數(shù)據(jù),只有0或者1
    //s4 := Student{3, "stranger0", 1, 20} //報(bào)錯(cuò),非指定初始化,必須每個(gè)成員都初始化
    //  fmt.Printf(s1, s2) //報(bào)錯(cuò),非字符串類(lèi)型不可打印
    fmt.Println(s1, s2) //Println可以訪問(wèn)

    fmt.Printf("%T,%T", s1, s2)
    fmt.Println("")
    fmt.Printf("%v,%v", s1, s2)

    //2) 指定成員初始化
    fmt.Println("")
    s5 := Student{id: 2, name: "laowang"} //未初始化的成員為零值
    //s5.id,如果Student.id則報(bào)錯(cuò)---》沒(méi)有id這個(gè)method
    //3)訪問(wèn)結(jié)構(gòu)體的成員變量
    fmt.Printf("id=%d,name=%s,sex=%c,age=%d,addr=%s",
        s5.id, s5.name, s5.sex, s5.age, s5.addr)

    //4) struct的指針變量
    fmt.Println("")
    var s8 *Student = &Student{8, "wck", 1, 20, "sz"}
    s9 := &Student{9, "god_god", 0, 21, "sz"}
    fmt.Printf("%v,%v", s8, s9)

    //5) struct的成員變量賦值
    fmt.Println("")
    var s10 Student
    s10.id = 2
    s10.name = "哈哈"
    s10.sex = 0
    fmt.Println(s10)

    //6)=======================結(jié)構(gòu)體變量為指針變量
    s11 := new(Student)
    s11.id = 11
    s11.name = "www"
    fmt.Println(s11)

    //7)普通變量和指針變量類(lèi)型打印
    var s12 Student = Student{4, "mmm", 1, 20, "sh"}
    fmt.Printf("s12=%v,&s12=%v\n", s12, &s12)

    //8)獲取成員的兩種方式
    var p *Student = &s12
    //p.成員和(*p).成員操作是等價(jià)的
    p.id = 15
    (*p).name = "zzz"
    fmt.Println(p, *p, s12)

    //9)結(jié)構(gòu)體作為函數(shù)參數(shù)之值傳遞
    var s13 Student = Student{1, "shenzhenbei", 1, 18, "sz"}
    printStudentValue(s13) //值傳遞,形參的修改不會(huì)影響到實(shí)體
    fmt.Println("main s=", s13)
    //10)結(jié)構(gòu)體作為函數(shù)參數(shù)之引用傳遞
    printStudentPointer(&s13)
    fmt.Println("main s=", s13)
    //11) 結(jié)構(gòu)體成員的可見(jiàn)性,如文頭所述。
}

func printStudentPointer(p *Student) {
    p.id = 250
    fmt.Println("printStudentPointer p = ", p)
}

輸出結(jié)果如下:

創(chuàng)新互聯(lián)建站自2013年創(chuàng)立以來(lái),是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元蔡甸做網(wǎng)站,已為上家服務(wù),為蔡甸各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

{1 ck_god 0 27 sz} {2 god_girl 1 23 sz}
main.Student,main.Student
{1 ck_god 0 27 sz},{2 god_girl 1 23 sz}
id=2,name=laowang,sex=
&{8 wck 1 20 sz},&{9 god_god 0 21 sz}
{2 哈哈 0 0 }
&{11 www 0 0 }
s12={4 mmm 1 20 sh},&s12=&{4 mmm 1 20 sh}
&{15 zzz 1 20 sh} {15 zzz 1 20 sh} {15 zzz 1 20 sh}

名稱(chēng)欄目:Go中的"類(lèi)"之struct的初體驗(yàn)
標(biāo)題網(wǎng)址:http://weahome.cn/article/igdgpi.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部