aspose file tools*
The moose likes Other Languages and the fly likes Strings in Go Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Java 8 in Action this week in the Java 8 forum!
JavaRanch » Java Forums » Languages » Other Languages
Bookmark "Strings in Go" Watch "Strings in Go" New topic
Author

Strings in Go

Harald Schlindwein
Greenhorn

Joined: Jan 14, 2011
Posts: 2
Hi,


in Java it is a known problem to change strings at runtime especially in loops and very often.
That lead to StringBuilder/Buffer.

How does Go handle that problem or is there any for Go at all?

Given
var s string = "Some text"
var t string = "Some text"
would mean at runtime s == t in Java (afaik)
Also in Go? Because the byte field is the same and the compiler could/should know it...

Harald
Mark Summerfield
author
Ranch Hand

Joined: Jun 20, 2012
Posts: 37

Hi Harald,

In Go, strings are immutable just as they are in Java and Python. This has many benefits both in terms of performance and for writing robust concurrent programs.

Given
var s string = "Some text"
var t string = "Some text"
would mean at runtime s == t in Java (afaik)


This is an implementation detail that may or may not be true for any given JVM. The same applies in Python. In Go, s == t is true (== sensibly does the string comparison), but &s != &t (i.e., each has a different address so each string is unique). However, the address uniqueness is still just an implementation detail and shouldn't be assumed.

Go's equivalent to Java's StringBuilder is bytes.Buffer:



This assumes you have some readStringFromSomewhere() function that returns an empty string when it is finished. A slightly more sophisticated example is shown in "Programming in Go" on page 88.


Mark Summerfield
"Programming in Go" - http://www.qtrac.eu/gobook.html
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Strings in Go
 
Similar Threads
Doubt on page 547 HFSJ
Journal Article - The SCJP Tip Line - Strings, Literally
StringTokenizer tab delimiter
Go question: make(map) syntax
Gc