Golang datatypes: Difference between revisions
From wikinotes
(→Arrays) |
(→Arrays) |
||
Line 123: | Line 123: | ||
<syntaxhighlight lang="go"> | <syntaxhighlight lang="go"> | ||
family := [2]string{"will", "alex"} // create 2-item array with these elements | family := [2]string{"will", "alex"} // create 2-item array with these elements | ||
family := [...]string{"will", "alex"} // | family := [...]string{"will", "alex"} // create whose size matches provided elements | ||
var family [2]string | var family [2]string // create 2-item array, then assign elements | ||
family[0] = "will" | family[0] = "will" | ||
family[1] = "alex" | family[1] = "alex" |
Revision as of 20:08, 29 May 2022
Literal Types
"foo" // string 123 // int (cpu-arch dependent bitsize) 3.14 // float64 6.2e25 // float64 true, false // bool
Boolean
var condition bool = true
Text
String
Go's strings are bytestrings by default.
The are treated as arrays of bytes.
- Strings are immutable.
- Strings are UTF-8
TODO:
write some best pratices for handling multi-byte characters
var name string = "will" // string name := "will" // string // slices var ascii_code uint8 = name[1] // 2nd char from string var char string = string(ascii_code) // get string from ASCII code bytestring := []byte("hi") == [104, 105] // string as bytes (uint8) // operators msg := "hello " + "world" // concatenationRune
Runes are UTF-32 strings.
(Each character is auint32
)
Numeric
Integers
Integer sizes are expressed by their bit-size.
signed
int // (however many bits your CPU word-size is) int8 // 128 - 127 int16 // 32,768 - 32,767 int32 // 2,147,483,648 - 2,147,483,647 int64 // 9,223,372,036,854,775,808 - 9,223,372,036,854,775,807unsigned
uint // (however many bits your CPU word-size is) uint8 // 0 - 255 uint16 // 0 - 65,535 uint32 // 0 - 4,294,967,295 // uint64 does not existBytes
Same as
uint8
.math/big
Slow, but handles numbers of any size.
Complex Numbers
Go lets you represent complex/imaginary numbers.
var num complex64 = 1 + 2i var num complex128 = 1 + 2i var num complex64 = 2i // alternative for 1 + 2i var num complex64 = complex(1, 2) // alternative for 1 + 2iYou can also extract the complex/imaginary part of the number.
var num complex64 = 1 + 2i real(num) // the real number component imag(num) // the imaginary number component
Pointers
uintptr // a pointer of however many bits your CPU word-size is
Collections
Arrays
Arrays are statically-sized, homogenous collections of items,
stored contiguously in memory.family := [2]string{"will", "alex"} // create 2-item array with these elements family := [...]string{"will", "alex"} // create whose size matches provided elements var family [2]string // create 2-item array, then assign elements family[0] = "will" family[1] = "alex"