golang修改struct数组问题

前端之家收集整理的这篇文章主要介绍了golang修改struct数组问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
struct数组修改结构体值:
// 11111111 project 11111111.go
package main

import (
	"fmt"
)

type Bid struct {
	CRID  string
	ImpID string
}

func main() {
	bid1 := Bid{
		CRID:  "222",ImpID: "aaa",}

	bid2 := Bid{
		CRID:  "111",ImpID: "bbb",}

	//方法1:赋给一个新的对象
	var szBid []Bid
	szBid = append(szBid,bid1)
	szBid = append(szBid,bid2)
	szValidBid := []Bid{}
	for _,singleBid := range szBid {
		singleBid.CRID = "dddd"
		szValidBid = append(szValidBid,singleBid)
	}
	fmt.Println(szValidBid)

	//方法2
	var szBid1 []Bid
	szBid1 = append(szBid1,bid1)
	szBid1 = append(szBid1,bid2)
	for i,singleBid := range szBid1 {
		singleBid.CRID = "dddd"
		szBid1[i] = singleBid
	}
	fmt.Println(szBid1)

	//错误方法,值不会改变,因为rangge给它赋给了一个新的对象
	var szBid2 []Bid
	szBid2 = append(szBid2,bid1)
	szBid2 = append(szBid2,bid2)
	for _,singleBid := range szBid2 {
		singleBid.CRID = "dddd"
	}
	fmt.Println(szBid2)

	//test
	s := Bid{
		CRID:  "p",ImpID: "q",}

	fmt.Println(s)
	s.CRID = "pp"
	fmt.Println(s)

}
//struct指针数组修改结构体值
package main
import (
    "fmt"
)
type Bid struct {
    CRID  string
    ImpID string
}
func main() {
    var szBid []*Bid
    szBid = append(szBid,&Bid{CRID: "gui",ImpID: "gu"})
    szBid = append(szBid,&Bid{CRID: "gui1",ImpID: "gu1"})
    for _,singleBid := range szBid {
        singleBid.CRID = "dddd"
    }
    fmt.Printf("%+v\n",szBid[0])
    fmt.Printf("%+v\n",szBid[1])
}

猜你在找的Go相关文章