- int float string 不可寻址 复制值
- array struct 复制值
- map slice chan 复制引用
*array
*struct
复制指针
package main | |
import ( | |
"log" | |
) | |
func main() { | |
i := [...]int{1, 2, 3} | |
log.Printf("before show: %v", i) | |
show(i) | |
log.Printf("after show: %v", i) | |
} | |
func show(i [3]int) { | |
i[0]++ | |
log.Printf("in show: %v", i) | |
} | |
// 2018/09/18 10:57:28 before show: [1 2 3] | |
// 2018/09/18 10:57:28 in show: [2 2 3] | |
// 2018/09/18 10:57:28 after show: [1 2 3] |
package main | |
import ( | |
"log" | |
) | |
func main() { | |
i := &[...]byte{1, 2, 3} | |
log.Printf("before show: %v", i) | |
show(i) | |
log.Printf("after show: %v", i) | |
} | |
func show(i *[3]byte) { | |
i[0]++ | |
log.Printf("in show: %v", i) | |
} | |
// 2018/09/18 11:12:46 before show: &[1 2 3] | |
// 2018/09/18 11:12:46 in show: &[2 2 3] | |
// 2018/09/18 11:12:46 after show: &[2 2 3] |
package main | |
import ( | |
"log" | |
) | |
func main() { | |
i := map[string]int{"a": 1, "b": 2} | |
log.Printf("before show: %v", i) | |
show(i) | |
log.Printf("after show: %v", i) | |
} | |
func show(i map[string]int) { | |
i["a"]++ | |
log.Printf("in show: %v", i) | |
} | |
// 2018/09/18 11:01:30 before show: map[a:1 b:2] | |
// 2018/09/18 11:01:30 in show: map[a:2 b:2] | |
// 2018/09/18 11:01:30 after show: map[a:2 b:2] |
package main | |
import ( | |
"log" | |
) | |
func main() { | |
i := []int{1, 2, 3} | |
log.Printf("before show: %v", i) | |
show(i) | |
log.Printf("after show: %v", i) | |
} | |
func show(i []int) { | |
i[0]++ | |
log.Printf("in show: %v", i) | |
} | |
// 2018/09/18 10:57:28 before show: [1 2 3] | |
// 2018/09/18 10:57:28 in show: [2 2 3] | |
// 2018/09/18 10:57:28 after show: [2 2 3] |
package main | |
import ( | |
"log" | |
) | |
type test struct { | |
Name string | |
Value int | |
} | |
func main() { | |
i := test{"a", 1} | |
log.Printf("before show: %v", i) | |
show(i) | |
log.Printf("after show: %v", i) | |
} | |
func show(i test) { | |
i.Value++ | |
log.Printf("in show: %v", i) | |
} | |
// 2018/09/18 11:03:46 before show: {a 1} | |
// 2018/09/18 11:03:46 in show: {a 2} | |
// 2018/09/18 11:03:46 after show: {a 1} |
package main | |
import ( | |
"log" | |
) | |
type test struct { | |
Name string | |
Value int | |
} | |
func main() { | |
i := &test{"a", 1} | |
log.Printf("before show: %v", i) | |
show(i) | |
log.Printf("after show: %v", i) | |
} | |
func show(i *test) { | |
i.Value++ | |
log.Printf("in show: %v", i) | |
} | |
// 2018/09/18 11:04:59 before show: &{a 1} | |
// 2018/09/18 11:04:59 in show: &{a 2} | |
// 2018/09/18 11:04:59 after show: &{a 2} |