GStrings (abreviación de Groovy Strings) es una cadena de texto que contiene expresiones embebidas. Un GString solo puede ser construido con comillas dobles o triples (las cuales veremos en el apartado 2.4). Veamos un ejemplo:
```
def saldo = 1821.14
println "El saldo es de ${saldo} euros"
```
En el código anterior, vemos que dentro de la cadena de texto pasada a println hemos insertado la variable saldo como si fuera parte de la propia cadena de texto. Esta inserción se hace dentro del operador ${} y es evaluada en tiempo de ejecución. Como se indicaba en el párrafo anterior, podemos insertar cualquier expresión dentro de un GString:
```
def saldo = 1821.14
def mensaje = "El saldo a fecha ${new Date()} es de ${saldo} euros"
println mensaje
```
Es evidente que el código anterior es mucho mas natural, tanto al escribirlo como al leerlo, que su homologo en Java (el cual necesitaría unir cada parte de texto con cada expresión mediante el operador de concatenación +). Es importante tener siempre presente que un GString no es un String, y que usarlos en combinación puede producir resultados inesperados:
```
def str = "abc"
def gstr = "${str}"
println str.equals(gstr)
println str.equals(gstr.toString())
```
La primera sentencia println devuelve false, ya que ambas clases implementan sus métodos equals() y hashCode() de forma diferente. El mismo problema puede surgir (y surgirá) si mezclamos String's y GString's en sitios tales como las claves de un Map. Una forma de solventar este problema es invocar el método toString() en el objeto GString, como puede verse en la segunda sentencia println del código anterior (la cual sí devuelve true pues ahora ambos objetos a comparar sí son del mismo tipo).