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


經過驗證,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, "指針傳遞函數")
}

  

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM