golang代碼解讀

 

1)for語句與循環運算ide

package main
import "fmt"
func main() {
sum := 1
for ; sum <1000 ; {  // 去掉第一個分號: C 的 while 在 Go 中叫作 for。
sum += sum    //  4= 2+2  4之內輸出4 , 8 = 4 + 4 8之內輸出8 ;1024 = 512 + 512
 }
fmt.Println(sum)
}

  

2)指針解讀指針

package main
import "fmt"
func main() {
	i, j := 42, 2701

	p := &i         // 指向i的內存地址 & 操做符會生成一個指向其操做數的指針(內存地址)。
	fmt.Println(p) // 輸出內存地址
        fmt.Println(*p) //  輸出內存地址中的值。* 操做符表示指針指向的底層值。
	*p = 21         // 更新內存地址中的值,值更新後指向該地址的值也更新。
	fmt.Println(i)  //其值從更新21更新到42,但內存地址不變。

	p = &j         // point to j
	*p = *p / 37   // divide j through the pointer
	fmt.Println(j) // see the new value of j
}

  

3)結構體與指針blog

package main
import "fmt"
type Vertex struct {
	X int
	Y int
}

func main() {
	v := Vertex{1, 2}
	p := &v  //指定p爲結構體v的地址
	p.X = 1e3 // p.X實際是(*p).X,指的是v地址上x 的值
	fmt.Println(v)
}

 4)  關於切片的代碼解讀內存

package main
import "fmt"

func printSlice(s string, x []int) {
   
	fmt.Printf("%s len=%d cap=%d %v\n",
		s, len(x), cap(x), x)
}

func main() {
    numbers := []int{0,1,2,3} 
  printSlice("numbers 長度 容量 初始值:",numbers)
    
	a := make([]int, 5)
	a[0] = 1232
	printSlice("a 長度 容量 初始值:", a)
	
	b := make([]int, 0, 5)
//	b[0] = 123 // 長度爲0,沒法賦值
	printSlice("b 長度 容量 初始值:", b)
	
	c := b[:2]
    c[0] = 333
  //  c[2] = 2
	printSlice("c 長度 容量 初始值:", c)
	
	d := c[2:5]
	d[0] = 3434
	printSlice("d 長度 容量 初始值:", d)

}

 結果:string

相關文章
相關標籤/搜索