Structs in Fortress On this page Our input specifies JavaScript
as the target language. Here’s how the Go code example for structs is translated into JavaScript:
Go’s structs are typed collections of fields. They’re useful for grouping data together to form records.
This person
struct type has name
and age
fields.
class Person {
constructor ( name ) {
this . name = name ;
this . age = 0 ;
}
}
newPerson
constructs a new person struct with the given name.
function newPerson ( name ) {
let p = new Person ( name );
p . age = 42 ;
return p ;
}
JavaScript is a garbage collected language; you can safely return a reference to a local variable - it will only be cleaned up by the garbage collector when there are no active references to it.
// Main execution
function main () {
// This syntax creates a new struct
console . log ( new Person ( "Bob" ));
// You can name the fields when initializing a struct
let alice = new Person ( "Alice" );
alice . age = 30 ;
console . log ( alice );
// Omitted fields will be undefined
let fred = new Person ( "Fred" );
console . log ( fred );
// Prefixing with an & yields a pointer to the struct
let ann = new Person ( "Ann" );
ann . age = 40 ;
console . log ( ann );
console . log ( newPerson ( "Jon" ));
// Access struct fields with a dot
let s = new Person ( "Sean" );
s . age = 50 ;
console . log ( s . name );
// You can also use dots with struct pointers - the pointers are automatically dereferenced
let sp = s ;
console . log ( sp . age );
// Structs are mutable
sp . age = 51 ;
console . log ( sp . age );
// If a struct type is only used for a single value, we don’t have to give it a name. The value can have an anonymous struct type. This technique is commonly used for table-driven tests.
let dog = {
name : "Rex" ,
isGood : true
};
console . log ( dog );
}
// Call the main function to execute the code
main ();
Running the Code# To run the translated JavaScript code, you can save the code into a file struct_example.js
and execute it using Node.js.
The expected output will be:
Person { name: 'Bob' , age: 0 }
Person { name: 'Alice' , age: 30 }
Person { name: 'Fred' , age: 0 }
Person { name: 'Ann' , age: 40 }
Person { name: 'Jon' , age: 42 }
Sean
50
51
{ name: 'Rex' , isGood: true }
Now that we can run and build basic JavaScript programs, let’s learn more about the language.