Skip to content

Instantly share code, notes, and snippets.

@tio-iis
Created May 1, 2022 11:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tio-iis/4b9b2264e2a791c1f7dbd35cca5335fa to your computer and use it in GitHub Desktop.
Save tio-iis/4b9b2264e2a791c1f7dbd35cca5335fa to your computer and use it in GitHub Desktop.
package main
import "fmt"
func main() {
//Array
//格納できるstringの個数は2個である。
//型推論で定義している。
arr := [2]string{}
fmt.Println(arr)
//型推論じゃない場合
//var arr [2]string
//初期値をあたえることができる。
//arr := [2]string{"iis", "tio"}
//fmt.Println(arr)
//要素をセットする場合はインデックスを指定する。
//arr[0] = "iis"
//arr[1] = "tio"
//fmt.Println(arr)
//値を取得するときはインデックスを指定する。
//fmt.Println(arr[0])
//配列の長さは len() で取得することができる。
//fmt.Println(len(arr))
//確保した要素数を超えることはできない。
//arr[2] = "desu"
//forで要素を取り出すことができる。
//変数のiはインデックスで、vは値になる。
//利用しないものは _ で利用しないことを明示する。
//rangeは要素を最後まで取り出すための指定である。
//for i, v := range arr {
// fmt.Println(i)
// fmt.Println(v)
//}
//rangeを利用しない場合は以下のようになる。
//for i := 0; i < len(arr); i++ {
// fmt.Println(i)
// fmt.Println(arr[i])
//}
//ArrayとSliceは特定の要素を削除する機能がない。
//削除したい要素以外をセットしたArray, Sliceを新規作成することで削除する。
//補足ブログに載せる。
//Slice
//Arrayのように要素数を指定することがない。
//型推論
//sl := []string{}
//fmt.Println(sl)
//型推論じゃない場合
//var sl []string = []string{}
//make()を利用することでも定義することができる。
//length, capacity という概念を理解する必要があるので、
//一旦↑と同じ定義ということだけ覚えてもらえればいい。
//sl := make([]string, 0)
//初期値をセットすることができる。
//sl := []string{"iis", "tio"}
//fmt.Println(sl)
//スライスに要素を追加するにはappend()を利用する。
//第一引数は追加対象のスライス
//第二引数は追加対象の要素
//戻り値は要素を追加したあとの配列である。
//sl = append(sl, "iis")
//sl = append(sl, "tio")
//sl = append(sl, "desu")
//fmt.Println(sl)
//値を取得するときはインデックスを指定する。
//fmt.Println(sl[0])
//長さは len() で取得することができる。
//fmt.Println(len(sl))
//append()は複数の様子をまとめて追加することができる。
//sl = append(sl, "iis", "tio", "desu")
//fmt.Println(sl)
//Arrayと同じようにforで要素を取り出すことができる。
//インデックスはいらないので、 _ にしている。
//for _, v := range sl {
// fmt.Println(v)
//}
/Map
//以下のように定義する。
//m := map[string]string{}
//fmt.Println(m)
//初期値をセットすることができる。
//m := map[string]string{
// "name": "iis_tio",
// "address": "tokyo",
//}
//fmt.Println(m)
//値をセットする
//m["name"] = "iis_tio"
//m["address"] = "tokyo"
//fmt.Println(m)
//値を取得するときはkeyを指定する。
//fmt.Println(m["name"])
//要素を取得する際に第二戻り値を用意すると、keyの有無を調べることができる。
//存在する場合は true になる。
//v, ok := m["name"]
//fmt.Println(ok)
//fmt.Println(v)
//存在しない場合は false になる。
//v, ok = m["nameeeeee"]
//fmt.Println(ok)
//fmt.Println(v)
//for k, v := range m {
// fmt.Println(k)
// fmt.Println(v)
//}
//Mapには要素を削除する機能がある。
//delete()を利用する。
//第一引数は削除対象のマップを指定する。
//第二引数には削除する要素のkeyを指定する。
//delete(m, "name")
//fmt.Println(m)
//Mapは重複排除に使われる
//duplicated_array := []int{1, 2, 3, 3, 4, 5}
//not_duplicated_array := []int{}
//struct{}は空の構造体定義である。
//値に意味がない場合に利用される。
//myMap := map[int]struct{}{}
//for _, v := range duplicated_array {
// _, yes := myMap[v]
// if !yes {
// myMap[v] = struct{}{}
// not_duplicated_array = append(not_duplicated_array, v)
// }
//}
//fmt.Println(not_duplicated_array)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment