golang代码解读

 

1)for语句与循环运算

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)结构体与指针

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)

}

 结果:

 

posted @ 2018-11-28 10:25  TonyHuang123  阅读(349)  评论(0编辑  收藏  举报