Re:C and Go without CGO
by marcell on Wednesday July 30, 2014 @02:28AM
(#8106705)
Can anyone explain the use of the "·" character?
[ Parent
| on HN ]
Re:C and Go without CGO
by markuskobler on Wednesday July 30, 2014 @03:33AM
(#8106823)
So Russ Cox goes into more detail in this post https://groups.google.com/d/msg/golang-nuts/MdYlJbW4SAo/TrAE...
Although Go does not compile via C, occasionally C code does need to
refer to Go identifiers. Since we chose not to restrict the mangled Go
names to the space of valid C names, we must add some mechanism to
refer to Go names from C. That mechanism is:
1. In the assemblers and C compilers, which already accepted all
non-ASCII Unicode code points in identifiers, the Unicode characters ·
and / rewrite to ordinary . and / in the object files.
2. A symbol with a leading . has its import path inserted before the .
when being linked: inside encoding/json.a, a reference to ".Marshal"
is equivalent to "encoding/json.Marshal".
Because of 2, we went a long time without needing a special character
for slash. Recently the introduction of race detection has made it
convenient for package runtime to be able to refer to a few symbols in
runtime/race, hence the new slash lookalike."For some supplementary information, see also this answer on stackoverflow: http://stackoverflow.com/a/13490787/98528
When did statements like this sprout a So on the front? It's everywhere now!
Re:C and Go without CGO
by hornetblack on Wednesday July 30, 2014 @02:59AM
(#8106759)
In go you use '.' for namespace accesses. Eg: os.NewFile.
But in C '.' means access struct member. So the · is used instead so to do
f = os.NewFile(3, "/dev/zero") # Go
you would use f = os·NewFile(3, "/dev/zero"); # CSome trivia: In acme or sam (the preferred editors of at least Rob Pike, Russ Cox and Ken Thompson) it is trivial to type a ·. Basically you type
ALT . .
In fact it's pretty easy to type a whole bunch of Unicode stuff, see keyboard(6): http://plan9.bell-labs.com/magic/man2html/6/keyboard