golang 值传递和引用传递的总结

前端之家收集整理的这篇文章主要介绍了golang 值传递和引用传递的总结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

典型的引用传递类型:slice,map和channel:
典型的值传递类型:数组

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. type Test struct {
  6. A int64
  7. B string
  8. }
  9.  
  10. func main(){
  11. // 引用类型
  12. map_param := make(map[int64]string,0)
  13. fmt.Println(map_param)
  14. mapfunc(map_param)
  15. fmt.Println(map_param)
  16. slice_param := make([]int64,0)
  17. slice_param = append(slice_param,999)
  18. fmt.Println(slice_param)
  19. slicefunc(slice_param)
  20. fmt.Println(slice_param)
  21. // 值类型
  22. arr_param := [5]int64{1,2,3,4}
  23. fmt.Println(arr_param) // 1,2,3,4
  24. arrfunc(arr_param)
  25. fmt.Println(arr_param) // 1,4
  26. test := Test{A:1,B:"ooo",}
  27. fmt.Println(test) // 1,ooo
  28. testfunc(test)
  29. fmt.Println(test) // 1,ooo
  30. }
  31.  
  32. func mapfunc(param map[int64]string){
  33. param[1]="ahha"
  34. }
  35.  
  36. func slicefunc(param []int64){
  37. param[0]=10000
  38. }
  39.  
  40. func testfunc(a Test){
  41. a.A=9999
  42. a.B="hah"
  43. }
  44.  
  45. func arrfunc(param [5]int64){
  46. param[0]=10000
  47. }

猜你在找的Go相关文章