go study concluded (six)

1. Pointer

指针保存了值的内存地址。 
类型 *T 是指向 T 类型值的指针,其零值为 nil。
& 操作符会生成一个指向其操作数的指针。 
* 操作符表示指针指向的底层值。 
package main

import "fmt"

func main() {
	i, j := 42, 27

	p := &i         // 指向 i
	fmt.Println(*p) // 通过指针读取 i 的值
	*p = 21         // 通过指针设置 i 的值
	fmt.Println(i)  // 查看 i 的值

	p = &j         // 指向 j
	*p = *p / 9   // 通过指针对 j 进行除法运算
	fmt.Println(j) // 查看 j 的值
	fmt.Println(&j)
	fmt.Println(p)
	fmt.Println(&p)
	fmt.Println(*p)
}

42
21
3
0x40e024
0x40e024
0x40c138
3

2. Section (a)

切片并不存储任何数据,它只是描述了底层数组中的一段。

更改切片的元素会修改其底层数组中对应的元素。

与它共享底层数组的切片都会观测到这些修改。 
package main
import "fmt"
func main() {
	names := [4]string{
		"John",
		"Paul",
		"George",
		"Ringo",
	}
	fmt.Println(names)
	a := names[0:2]
	b := names[1:3]
	fmt.Println(a, b)
	b[0] = "XXX"
	fmt.Println(a, b)
	fmt.Println(names)
}

[John Paul George Ringo]
[John Paul] [Paul George]
[John XXX] [XXX George]
[John XXX George Ringo]

3. Slice (b)

package main

import "fmt"

func main() {
	s := []int{2, 3, 5, 7, 11, 13}

	s1 := s[1:4]
	fmt.Println(s1,len(s1), cap(s1))

	s2 := s[:2]
	fmt.Println(s2,len(s2), cap(s2))

	s3 := s[1:]
	fmt.Println(s3,len(s3), cap(s3))
	
	s4 := s[:]
	fmt.Println(s4,len(s4), cap(s4))
}

[3 5 7] 3 5
[2 3] 2 6
[3 5 7 11 13] 5 5
[2 3 5 7 11 13] 6 6

4.Range

可以将下标或值赋予 _ 来忽略它。

for i, _ := range pow
for _, value := range pow

若只需要索引,忽略第二个变量即可。

for i := range pow



package main

import "fmt"

func main() {
	pow := make([]int, 10)
	for i := range pow {
		pow[i] = 1 << uint(i) // == 2**i
	}
	for _, value := range pow {
		fmt.Printf("%d\n", value)
	}
	for index := range pow {
		fmt.Printf("%d\n", index)
	}
}

5. Mapping Assignment

package main

import "fmt"

func main() {
	m := make(map[string]int)

	m["Answer"] = 42
	fmt.Println("The value:", m["Answer"])

	m["Bnswer"] = 48
	fmt.Println("The value:", m["Bnswer"])
	fmt.Println("The value:", m)
	delete(m, "Answer")
	fmt.Println("The value:", m["Answer"])
	
	v, ok := m["Answer"]
	fmt.Println("The value:", v, "Present?", ok)
	
	w, ok := m["Bnswer"]
	fmt.Println("The value:", w, "Present?", ok)
}

The value: 42
The value: 48
The value: map[Answer:42 Bnswer:48]
The value: 0
The value: 0 Present? false
The value: 48 Present? true

 

Published 131 original articles · won praise 13 · views 60000 +

Guess you like

Origin blog.csdn.net/haiziccc/article/details/104126917