☑本記事の内容
- 型変換
- 配列
- スライス
型変換
✔型変換の目次
数値型の変換
- int(),float()とやることで数値の型変換を行える
- %fでfloat表示、%dでint表示
package main
import "fmt"
func main() {
var x int = 1
xx := float64(x)
fmt.Printf("%T %v %f\n", xx, xx, xx)
var y float64 = 1.5
yy := int(y)
fmt.Printf("%T %v %d\n", yy, yy, yy)
}
(結果)
float64 1 1.000000
int 1 1
文字列型から数値型への変換
- 同じようにint()を使用しても変換出来ない
- 他のプログラミング言語の場合だったら可能なことが多い
package main
import "fmt"
func main() {
var s string = "15"
ss = int(s)
fmt.Println(ss)
}
(結果)エラー表示
cannot convert s (type string) to type int
- strconv.Atoi()を使用する
package main
import (
"fmt"
"strconv"
)
func main() {
var s string = "15"
i, _ := strconv.Atoi(s)
fmt.Printf("%T %v\n", i, i)
}
(結果)
int 15
配列
基本的なこと
- [数字]<型>とすることで配列を作成出来る
- 後から配列に値を入れる方法と初期に値を入れる方法がある
package main
import (
"fmt"
)
func main() {
var a [2]int
a[0] = 100
a[1] = 200
fmt.Println(a)
var b [2]int = [2]int{100, 200}
fmt.Println(b)
}
(結果)
[100 200]
[100 200]
配列の注意点
- 配列の場合は最初に指定した数字の個数以上、値を追加することが出来ない
- 最初に配列の個数を2と設定すると3つ目の値は入らない
package main
import (
"fmt"
)
func main() {
var b [2]int = [2]int{100, 200}
b = append(b, 300)
fmt.Println(b)
}
(結果)エラー表示
first argument to append must be slice; have [2]int
スライス
✔スライスの目次
基本的なこと
- 最初の値は0から数え始める
- 値の番号を指定して置き換えることも出来る
package main
import (
"fmt"
)
func main() {
n := []int{1, 2, 3, 4, 5, 6}
fmt.Println(n)
fmt.Println(n[2])
fmt.Println(n[2:4])
fmt.Println(n[:2])
fmt.Println(n[2:])
fmt.Println(n[:])
n[2] = 200
fmt.Println(n)
}
(結果)
[1 2 3 4 5 6]
3
[3 4]
[1 2]
[3 4 5 6]
[1 2 3 4 5 6]
[1 2 200 4 5 6]
スライスの中にスライスを入れる、値を追加する
- スライスの中にスライスを入れることも可能
- 配列と違い、後から値を追加することが出来る
package main
import (
"fmt"
)
func main() {
n := []int{1, 2, 3, 4, 5, 6}
var board = [][]int{
[]int{0, 1, 2},
[]int{3, 4, 5},
[]int{6, 7, 8},
}
fmt.Println(board)
n = append(n, 100, 200, 300, 400)
fmt.Println(n)
}
(結果)
[[0 1 2] [3 4 5] [6 7 8]]
[1 2 3 4 5 6 100 200 300 400]
makeとキャパシティ
- スライスは値の個数とキャパシティを指定することが出来る
- メモリを気にする場合に使用される
- 基本的には使用しないが、使用する機会もあるので頭の片隅に置いておくくらい
- スライスなので、後からキャパシティの追加も出来る
package main
import (
"fmt"
)
func main() {
n := make([]int, 3, 5)
fmt.Printf("len=%d cap=%d value=%v\n", len(n), cap(n), n)
n = append(n, 0, 0)
fmt.Printf("len=%d cap=%d value=%v\n", len(n), cap(n), n)
n = append(n, 1, 2, 3, 4, 5)
fmt.Printf("len=%d cap=%d value=%v\n", len(n), cap(n), n)
a := make([]int, 3)
fmt.Printf("len=%d cap=%d value=%v\n", len(a), cap(a), a)
b := make([]int, 0)
var c []int
fmt.Printf("len=%d cap=%d value=%v\n", len(b), cap(b), b)
fmt.Printf("len=%d cap=%d value=%v\n", len(c), cap(c), c)
}
(結果)
len=3 cap=5 value=[0 0 0]
len=5 cap=5 value=[0 0 0 0 0]
len=10 cap=10 value=[0 0 0 0 0 1 2 3 4 5]
len=3 cap=3 value=[0 0 0]
len=0 cap=0 value=[]
len=0 cap=0 value=[]