1. 程式人生 > >go語言結構體作為函數參數,采用的是值傳遞

go語言結構體作為函數參數,采用的是值傳遞

驗證 import 函數參數 分享 print d+ 技術分享 技術 point

經過驗證,go語言結構體作為函數參數,采用的是值傳遞。所以對於大型結構體傳參,考慮到值傳遞的性能損耗,最好能采用指針傳遞。

驗證代碼:

package main

import (
	"fmt"
)

type st struct {
	id   int
	name string
}

func main() {
	d := st{1, "Jo"}
	fmt.Println(d, "值傳遞前")
	fValue(d)
	fmt.Println(d, "值傳遞後,外層值不變")
	fPoint(&d)
	fmt.Println(d, "指針傳遞後,外層值變化")
}

func fValue(s st) {
	s.id++
	s.name = "of"
	fmt.Println(s, "值傳遞函數")
}

func fPoint(s *st) {
	s.id++
	s.name = "of"
	fmt.Println(*s, "指針傳遞函數")
}

  

結果:

技術分享圖片

go語言結構體作為函數參數,采用的是值傳遞