Files
learngo/x-tba/maps/03-english-dict-map-populate/main.go

120 lines
2.5 KiB
Go
Raw Normal View History

2019-02-26 14:05:44 +03:00
// For more tutorials: https://blog.learngoprogramming.com
//
// Copyright © 2018 Inanc Gumus
// Learn Go Programming Course
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
//
package main
import (
"fmt"
"os"
)
func main() {
/*
#2A: Get the key from CLI
*/
args := os.Args[1:]
if len(args) != 1 {
fmt.Println("[english word] -> [turkish word]")
return
}
query := args[0]
/*
#1: Empty Map Literal
*/
// dict := map[string]string{}
/*
#3: Map Literal
Creates, initializes and returns a new map
with the given key-value pairs
*/
dict := map[string]string{
"good": "kötü",
"great": "harika",
"perfect": "mükemmel",
/*
#4: keys and values should be the same type
(key and value types do not need to be the same)
*/
// 42: "forty two",
// "forty two": 42,
}
// you can only add new pairs to an initialized map
dict["up"] = "yukarı" // adds a new pair
dict["down"] = "aşağı" // adds a new pair
dict["good"] = "iyi" // #5: overwrites the value at the key: "good"
dict["mistake"] = "" // #8: a key with a zero-value
// you can query an uninitialized map for its length
fmt.Printf("The dictionary contains %d words.\n", len(dict))
/*
#6: getting values from a map using keys directly
*/
// fmt.Println("good -> ", dict["good"])
// fmt.Println("great -> ", dict["great"])
// fmt.Println("perfect -> ", dict["perfect"])
/*
#11: looping over a map might be a sign of a design mistake
2019-02-26 14:05:44 +03:00
in your software.
(it prints unordered output)
*/
// for k, v := range dict {
// fmt.Printf("%q means %#v\n", k, v)
// }
/*
#12: printing a map (ordered output since Go 1.12)
*/
// fmt.Printf("%#v\n", dict)
/*
#13: compare a map using its printed output
(handy when testing)
*/
// copied := map[string]string{"up": "yukarı", "down": "aşağı",
// "mistake": "", "good": "iyi", "great": "harika",
// "perfect": "mükemmel"}
// first := fmt.Sprintf("%s", dict)
// second := fmt.Sprintf("%s", copied)
// if first == second {
// fmt.Println("Maps are equal")
// }
/*
#2B: retrieve values by key - O(1) efficiency
(even from an uninitialized map)
*/
// value := dict[query]
/*
#7: check for non-existing key using zero-value
*/
// if value == "" {}
/*
#9: check for non-existing key: with comma, ok
*/
// value, ok := dict[query]
// if !ok {}
/*
#10: comma ok in a short if
*/
if value, ok := dict[query]; ok {
fmt.Printf("%q means %#v\n", query, value)
return
}
fmt.Printf("%q not found.\n", query)
}