User Tools

Site Tools


programming:go

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
programming:go [2023/09/04 14:15] skipidarprogramming:go [2023/11/01 07:31] (current) – ↷ Page moved from camunda:programming:go to programming:go skipidar
Line 148: Line 148:
 } }
 </sxh> </sxh>
 +
 +
 +== Variables ==
 +
 +The ''':=''' short variable assignment operator indicates that short variable declaration is being used. There is no need to use the var keyword or declare the variable type.
 +
 +
 +<sxh go>
 +
 +package main
 +
 +import (
 + "fmt"
 + "github.com/jboursiquot/proverbs"
 + "strconv"
 +)
 +
 +// package variables
 +var x, y, z bool = true, true, true
 +
 +// accesses the package level values
 +func packlvlvars() (bool, bool, bool) {
 + return x, y, z
 +}
 +
 +func main() {
 +
 + // method variables
 + // below vars are covering the package-level values in the scope of current function
 +
 +
 + // long variant
 + // split declaration and assignment
 + var mvar int
 + mvar = 123
 + fmt.Println(mvar)
 +
 +
 + // combine declaration and assignment
 + var mvar2 int = 123
 + fmt.Println(mvar2)
 +
 +
 + // declare multiple
 + x, y, z := 1, 2, "bla"
 + fmt.Println(strconv.Itoa(x) + strconv.Itoa(y) + z)
 +
 + // need a special value to get package variables
 + a, b, c := packlvlvars()
 + fmt.Println(strconv.FormatBool(a) + strconv.FormatBool(b) + strconv.FormatBool(c))
 +
 +}
 +
 +
 +</sxh>
 +
 +
 +== Pointers ==
 +
 +
 +<sxh go>
 +// basic-types/pointers/end/main.go
 +package main
 +
 +import (
 + "fmt"
 + "reflect"
 +)
 +
 +func main() {
 + // create a variable of type *T where T is an int
 + var a *int
 +
 + // declare and assign `b` variable of type int
 + valu := 100
 +
 + // assign the address of b to a
 + pointr = &valu
 +
 + // print out the value of a which is the address of b
 + fmt.Println(pointr)
 + // returns: ptr
 + fmt.Println("Type: %s", reflect.ValueOf(pointr).Kind() )
 +
 + // print out the value at the address of b
 + fmt.Println(*pointr)
 +}
 +</sxh>
 +
 +
 +== Structs & pass by reference or value ==
 +
 +Structure to hold data in Go Lang
 +
 +
 +
 +
 +<sxh go>
 +type author struct {
 + first string
 + last  string
 +}
 +
 +// getter 
 +// attention - the assignment to struct - is derived from parenthesis after "func" keyword
 +// is declared OUTSIDE of struct :(
 +func (a author) fullName() string {
 + return a.first + " " + a.last
 +}
 +
 +// setter
 +// passing the reference, so that we change the exact object and not its value
 +// changeName changes the first and last name of the author
 +func (a *author) changeName(first, last string) {
 + a.first = first
 + a.last = last
 +}
 +
 +func main() {
 + // initialize author
 + a := author{
 + first: "Marcus",
 + last:  "Aurelius",
 + }
 +
 + // print the author's full name
 + fmt.Println(a.fullName())
 +}
 +
 +</sxh>
 +
 +''*address'' - passes by reference
 +
 +Explains why to pass 
 +
 +{{https://s3.eu-central-1.amazonaws.com/alf-digital-wiki-pics/sharex/lzCAcBclf3.png?529x226}}
  
  
programming/go.1693836955.txt.gz · Last modified: by skipidar