go 基礎學習指針切片

指針

一個指針變量指向了一個值的內存地址

聲明指針   var ip *int

package main

import "fmt"

func main() {

   var a int= 20   /* 聲明實際變量 */
   var ip *int        /* 聲明指針變量 */

   ip = &a  /* 指針變量的存儲地址 */

   fmt.Printf("a 變量的地址是: %x\n", &a  )


	i, j := 42, 2701

	p := &i         // 指向 i
	fmt.Println(*p) // 通過指針讀取 i 的值
	*p = 21         // 通過指針設置 i 的值
	fmt.Println(i)  // 查看 i 的值

	p = &j         // 指向 j
	*p = *p / 37   // 通過指針對 j 進行除法運算
	fmt.Println(j) // 查看 j 的值
}

結構體 

一組字段(field)

package main

import "fmt"

type Vertex struct {
	X, Y int
}

var (
	v1 = Vertex{1, 2}  // 創建一個 Vertex 類型的結構體
	v2 = Vertex{X: 1}  // Y:0 被隱式地賦予
	v3 = Vertex{}      // X:0 Y:0
	p  = &Vertex{1, 2} // 創建一個 *Vertex 類型的結構體(指針)
)

func main() {
	fmt.Println(v1, p, v2, v3)
}

 

數組

相同唯一類型的一組已編號且長度固定的數據項序列

數組的長度是其類型的一部分,因此數組不能改變大小。

package main

import "fmt"

func main() {
	var a [2]string
	a[0] = "Hello"
	a[1] = "World"
	fmt.Println(a[0], a[1])
	fmt.Println(a)

	primes := [6]int{2, 3, 5, 7, 11, 13}
	fmt.Println(primes)
}

 切片 

 每個數組的大小都是固定的。而切片則爲數組元素提供動態大小的、靈活的視角。在實踐中,切片比數組更常用。

 

 

 range

 

map

 

可變變量

func f1(a ...interface{}) {
	fmt.Printf("類型:%T 值:%v\n", a, a)
}
func main() {
	s := []interface{}{1, 3, 5, 7, 8}
	f1(s)
	f1(s...)

}

結果:
類型:[]interface {} 值:[[1 3 5 7 8]]
類型:[]interface {} 值:[1 3 5 7 8]

好的學習地址 

go指南

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章