What does the asterisk do in "Go"?
Im guessing it means the same as in C
p is a pointer to a string
The statement var p *string = &s
would assign the address of the s
object to p
Next line *p = "ciao"
would change the contents of s
See this link from the Language Design FAQ
Interestingly, no pointer arithmetic
Why is there no pointer arithmetic? Safety. Without pointer arithmetic it's possible to create a language that can never derive an illegal address that succeeds incorrectly. Compiler and hardware technology have advanced to the point where a loop using array indices can be as efficient as a loop using pointer arithmetic. Also, the lack of pointer arithmetic can simplify the implementation of the garbage collector.
*
attached to a type (*string
) indicates a pointer to the type.
*
attached to a variable in an assignment (*v = ...
) indicates an indirect assignment. That is, change the value pointed at by the variable.
*
attached to a variable or expression (*v
) indicates a pointer dereference. That is, take the value the variable is pointing at.
&
attached to a variable or expression (&v
) indicates a reference. That is, create a pointer to the value of the variable or to the field.