t := *q复制指向的结构
q。
如果要观察
q通过的变化
t,请坚持使用指针:
func main() { t := q q.X = 4 u := *q fmt.Println(p, q, r, s, t, u, *t == u)}
这将产生您可能正在寻找的输出。
{1 2} &{4 2} {1 0} {0 0} &{4 2} {4 2} true
我不确定对您来说似乎很奇怪的事情。C和C ++的行为方式相同。考虑以下:
#include <iostream>struct Vertex{ int x; int y;};std::ostream& operator<<(std::ostream& out, const Vertex& v){ out << "{ " << v.x << ", " << v.y << " }"; return out;}int main(){ Vertex v = Vertex{1, 2}; Vertex* q = &v; Vertex t = *q; q->x = 4; std::cout << "*q: " << *q << "n"; std::cout << " t: " << t << "n";}
此C ++代码的输出显示相同的行为:
*q: { 4, 2 } t: { 1, 2 }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)