前端之家收集整理的这篇文章主要介绍了
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])
}