0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

makeとappendの特性と理解

Posted at

実装

  s := make([]int, 5)

  s = append(s, 1, 2, 3)
	 fmt.Println(s)
	 
	// [0 0 0 0 0 1 2 3]

上記はmakeメソッドでスライスを作成しました。第一引数を省略するとlenが5のスライスが作成されます。その結果ゼロ値[0, 0, 0, 0, 0]となります。そこに上記のようなappendメソッドで要素を実行すると、余計なゼロ値に値が加わってしまいます。対策としては、下記のような記述になります。

	s := make([]int, 0, 5)

	s = append(s, 1, 2, 3)
	fmt.Println(s)
	
	// [1 2 3]

上記の実装だとmakeメソッドで、len0でcap5のスライスが作成されます。その結果[]となります。そこに上記のようなappendメソッドで値を追加すると、余分なゼロ値を取り除いたスライスが作成できます。

参考記事

Go言語のmakeについて - Qiita

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?