久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

結(jié)構(gòu)體

 Coder編程 2022-12-02 發(fā)布于北京

結(jié)構(gòu)體定義和使用

#pargram mark 結(jié)構(gòu)體定義 
/*
 type 結(jié)構(gòu)體名稱 struct {
//結(jié)構(gòu)體成員
成員 + 數(shù)據(jù)類(lèi)型
}
*/
?
#pargram mark 定義結(jié)構(gòu)體
type Student struct{
name  string
age int
sex string
}
?
// var 結(jié)構(gòu)體變量名 結(jié)構(gòu)體數(shù)據(jù)類(lèi)型 = {姓名,年齡 ....}
?
//自動(dòng)推導(dǎo)類(lèi)型 stu := Student{"曹操", 65, "男", 80, "河南許昌"}
?
var stu Student = Student{"sobot", 18, "man"}

#pargram mark 聲明結(jié)構(gòu)體變量
var stu Student
stu.name = "sobot"
stu.age = 28
stu.sex = "man"
?
//獲取結(jié)構(gòu)體成員   通過(guò)點(diǎn)語(yǔ)法
fmt.Println(stu.name)
?

結(jié)構(gòu)體的賦值和比較

type Stud struct {
name  string
age   int
sex   string
}
//MARK: 創(chuàng)建結(jié)構(gòu)體變量
stu := Stud{"劉備", 58, "男"}
//MARK:將一個(gè)結(jié)構(gòu)體變量賦值給另外一個(gè)結(jié)構(gòu)體變量 前提是 具有相同的結(jié)構(gòu)體類(lèi)型
var s Stud = stu
//修改結(jié)構(gòu)體變量
fmt.Println(stu)
fmt.Println(s)
?
fmt.Printf("%p\n", &s)
fmt.Printf("%p\n", &stu)
?
/********* 結(jié)構(gòu)體比較 ***********/
stu := Stud{"關(guān)羽", 54, "男"}
?
s := Stud{"張飛", 50, "男"}
?
//比較兩個(gè)結(jié)構(gòu)體變量 比較結(jié)構(gòu)體成員內(nèi)容
?
if stu == s {
fmt.Println("相同")
} else {
fmt.Println("不同")
}
?

 

結(jié)構(gòu)體切片

type Student struct{
name string
age int
}
?
//var slice []結(jié)構(gòu)體數(shù)據(jù)類(lèi)型
?
//var slice []Student=make([]Student,5)
//slice[0] = Student{"劉備", 50, "男", 60, "巴蜀"}
?
var slice []Student
slice = append(slice, Student{"劉備", 50},
Student{"孫尚香", 20, "女"},
Student{"甄宓", 28, "女"})

//在內(nèi)存中存儲(chǔ)兩個(gè)相同內(nèi)容 獨(dú)立內(nèi)存地址的數(shù)據(jù)
//修改一個(gè)不影響另外一個(gè)
s := make([]Student, 3)
copy(s, slice)

結(jié)構(gòu)體作為map的值

m:=make(map[int]Student)
?
//賦值
m[1001] = Student{"a",20}
m[1002] = Student{"b",30}
m[1003] = Student{"c",20}
m[1004] = Student{"f",18}

//注意:將結(jié)構(gòu)體作為map的value時(shí) 在修改數(shù)據(jù)時(shí) 必須整體修改
m[1003] = Student{"修改",17}
?
//可以獲取 ,,不能修改
fmt.Println(m[1001].name)
?
//遍歷map中的數(shù)據(jù)
for k,v:=range m {
fmt.Println(k,v)
}
?
delete(m,1003)
delete(m,1001)
fmt.Println(m)
?
/************** 結(jié)構(gòu)體map值為切片 **********/
m:=make(map[int][]Student)
?
m[1001] = []Student{
{"A",20},
{"B",18},
}
?
m[1002] = []Student{
{"C",17},
{"F",20},
}
?
fmt.Println(m)
?

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

type Person struct {
name string
age int
sex string
?
//結(jié)構(gòu)體不能嵌套本結(jié)構(gòu)體 在創(chuàng)建結(jié)構(gòu)體時(shí) 無(wú)法預(yù)知內(nèi)存大小 (不要相互引用 A引用A,或是A引用B,B引用A)
//Person//err
}
?
//結(jié)構(gòu)體嵌套寫(xiě)法1
type Teacher1 struct{
p Person
subject string
worktime int
}
//結(jié)構(gòu)體嵌套寫(xiě)法2
type Teacher2 struct{
//如果結(jié)構(gòu)體嵌套結(jié)構(gòu)體 通過(guò)匿名字段使用結(jié)構(gòu)體
Person   //匿名字段
subject string
worktime int
}
?
//結(jié)構(gòu)體初始化
var tea Teacher1 = Teacher1{Person{"法師", 32, "男"}, "go語(yǔ)言開(kāi)發(fā)", 10}
//修改成員變量
tea.p.name = "大帥哥"
fmt.Println(tea.p.name)
?
//結(jié)構(gòu)體初始化
var tea Teacher2 = Teacher2{Person{"法師 ", 32, "男"}, "go語(yǔ)言開(kāi)發(fā)", 10}
//修改數(shù)據(jù)
tea.name = "大帥哥"
fmt.Println(tea.name)

結(jié)構(gòu)體作為函數(shù)參數(shù)

/********************  值傳遞 形參不能修改實(shí)參的值 ********************/
//結(jié)構(gòu)體變量作為函數(shù)參數(shù)
func test (s students){
fmt.Println(s)
}
?
//結(jié)構(gòu)體數(shù)組作為函數(shù)參數(shù)  
func test1(arr [3]int){
fmt.Println(arr)
}
//結(jié)構(gòu)體數(shù)組作為函數(shù)參數(shù)是值傳遞 形參不能修改實(shí)參的值
arr:=[3]Student{"法師",32,男"},{"玉姐",18,"女"},{"丁丁",26,"男"}}
test1(arr)
?
/******************** 地址傳遞(引用傳遞) 形參可以修改實(shí)參的值 map,slice ********************/
//結(jié)構(gòu)體切片作為函數(shù)參數(shù)
func test2(slice []Students) {
fmt.Printf("%p\n", slice)
slice[0].name = "大帥哥"
}
//結(jié)構(gòu)體map作為函數(shù)參數(shù)
func test3(m map[int]Students) {
//修改
//m[1001]=Students{"大帥哥",32,"男"}
//刪除
//delete(m,1001)
//添加數(shù)據(jù)
m[1111]=Students{"大光頭",40,"男"}
}
slice := [] Student{{"法師", 32, "男"}, {"玉姐", 18, "女"}, {"丁丁", 26, "男"}}
test2(slice)
?
m := map[int] Student{1001: {"法師", 32, "男"}, 1003: {"玉姐", 18, "女"}, 1008: {"丁丁", 26, "男"}}
test3(m)
?

指針

指針:
指針是一種數(shù)據(jù)類(lèi)型,,存儲(chǔ)的是變量地址

指針類(lèi)型定義:
var 指針變量名 指針類(lèi)型 = &變量
?
可以通過(guò)指針間接修改變量的值
*指針變量 = 值

*取值運(yùn)算符
&取地址運(yùn)算符
?

new創(chuàng)建空間

```
//聲明指針 默認(rèn)值為nil nil是一個(gè)內(nèi)存地址編號(hào)為0的空間
var p *int

//創(chuàng)建內(nèi)存空間 賦值給質(zhì)變量
//new(數(shù)據(jù)類(lèi)型)
p = new(int)
*p=123
```

 

 

 

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多