目錄指標的使用
//package 宣告開頭表示**所屬包
package main
import "fmt"
func main()
//a變數的位址是: c042052080
//*p變數的值: 20
通過指標修改變數
//package 宣告開頭表示**所屬包
package main
import "fmt"
func main()
//0xc042052080
//20
go空指標
//package 宣告開頭表示**所屬包
package main
import "fmt"
func main()
}//ptr的值為: //是空
值傳遞和引用傳遞
void pass_by_val(int a)
void pass_by_ref(int& a)
int main()
答案:3,4
值傳遞:
//package 宣告開頭表示**所屬包
package main
import "fmt"
func swap(a, b int)
func main()
// 3 4
go引用傳遞:
//package 宣告開頭表示**所屬包
package main
import "fmt"
func swap(a, b *int)
func main()
// 4 3
宣告變數:
var 陣列名[陣列長度] 陣列型別
宣告和初始化陣列:
//package 宣告開頭表示**所屬包
package main
import "fmt"
func main()
//可以省略大小
arr3 := [10]int
fmt.println(arr1, arr2, arr3)
//定義二維陣列
var grid [4][5]int
fmt.println(grid)
}//[0 0 0 0 0] [1 2 3] [2 4 6 8 10 0 0 0 0 0]
//[[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]
陣列是值型別還是引用型別?
package main
import "fmt"
//傳入陣列,修改元素
func printarr(arr [5]int)
}func main()
//可以省略大小
arr3 := [...]int
fmt.println(arr1, arr2, arr3)
//printarr(arr1)
//報錯
//printarr(arr2)
printarr(arr3)
//列印原始值
fmt.println()
fmt.println(arr3)
}
//package 宣告開頭表示**所屬包
package main
import "fmt"
func main()
//切片取值
fmt.println(arr[2:6])
fmt.println(arr[:6])
fmt.println(arr[2:])
fmt.println(arr[:])
}//[2 3 4 5]
//[0 1 2 3 4 5]
//[2 3 4 5 6 7]
//[0 1 2 3 4 5 6 7]
go切片可以向後擴充套件, 但不能向前擴充套件
//package 宣告開頭表示**所屬包
package main
import "fmt"
func main()
s1 := arr[2:6]
fmt.println(s1)
s2 := s1[3:5]
fmt.println(s2)
//切片新增元素
fmt.println(s3)
fmt.println(arr)
fmt.println(s4)
fmt.println(arr)
fmt.println(s5)
fmt.println(arr)
}//[2 3 4 5]
//[5 6]
//[5 6 10]
//[0 1 2 3 4 5 6 10]
//[5 6 10 11]
//[0 1 2 3 4 5 6 10]
//[5 6 10 11 12]
//[0 1 2 3 4 5 6 10]
內建函式copy()
//package 宣告開頭表示**所屬包
package main
import "fmt"
func main()
s1 := data[8:]
s2 := data[:5]
fmt.println(s1)
fmt.println(s2)
//將第二個拷貝到第乙個裡
copy(s2, s1)
fmt.println(s2)
fmt.println(data)
}//[8 9]
//[0 1 2 3 4]
//[8 9 2 3 4]
//[8 9 2 3 4 5 6 7 8 9]
初始化map
//package 宣告開頭表示**所屬包
package main
import "fmt"
func main()
fmt.println(m1)
//2. 自動推導型別 :=
m2 :=map[int]string
fmt.println(m2)
}//map[1:超哥 2:最帥]
//map[1:超哥 2:最帥]
鍵值操作
//package 宣告開頭表示**所屬包
package main
func main()
//修改
m1[1]="1111"
//追加
m1[3]="333"
}
結構體初始化
//package 宣告開頭表示**所屬包
package main
import "fmt"
//定義學生結構體
type student struct
func main()
fmt.println(s1)
s2 := student
fmt.println(s2)
//s3 := student
//2.指定初始化成員
s4 := student
fmt.println(s4)
fmt.println(s4.id)
//3.結構體作為指標變數初始化
var s5 *student = &student
fmt.println(s5)
//指標型別訪問變數
//go底層自己實現了轉換,下面2種都可以取指標物件的屬性
fmt.println((*s5).id)
fmt.println(s5.id)
s6 := &student
fmt.println(s6)}//
////
//4//&
//5//5
//&
結構體可以作為函式引數傳遞
//package 宣告開頭表示**所屬包
package main
import "fmt"
type student struct
//定義傳遞學生物件的方法
func tmpstudent(tmp student)
//定義傳遞指標型別的物件的方法
func tmpstudent2(p *student)
func main()
tmpstudent(s)
fmt.println("main s =", s)
//傳遞指標位址
tmpstudent2(&s)
fmt.println("main s2=", s)
}//tmp=
//main s =
//tmp2= &
//main s2=
Golang復合型別 切片
go 語言切片是對陣列的抽象。go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片 動態陣列 與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大 切片是一種方便 靈活且強大的包裝器。切片本身沒有任何資料。它們只是對現有陣列的...
golang復合資料型別 陣列
顧名思義,復合資料型別就是由其他型別組合而成的型別。go語言基本的復合資料型別有 指標 陣列 切片 字典 map 通道 結構和介面 go語言提供了陣列型別的資料結構。陣列是具有相同唯一型別的一組編號且長度固定的資料項序列,這種型別可以是任意的原始型別,例如 整形 字串或者自定義型別。陣列元素可以通過...
python復合型別 python復合型別
鏈結 list python的列表的特點 可以隨時新增和刪除元素 可以做的操作有 切片,新增,刪除,查詢,修改,排序 列表元素可以是不同型別,在型別不同的情況下就無法排序 列表是有序的 定義小馬列表 li twilight pinkiepie rainbow dash 插入 insert self ...