1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Golang】スライスの要素を別のスライスに追加する場合のappend()の使い方

Posted at

Go言語において、スライスに要素を追加するメソッドに「append()」がある。
この「append()」について、あるスライスを展開して、その要素を別のスライスに追加することが簡単にできたため備忘録として残す。

スライスの要素を別のスライスに追加する方法

package main

import "fmt"

type User struct {
	Name string
	Age  int
}

func main() {

	users := []User{
		{Name: "bob", Age: 10},
		{Name: "alice", Age: 20},
	}

	otherUsers := []User{
		{Name: "jorn", Age: 15},
	}

	otherUsers = append(otherUsers, users...)

	fmt.Println(otherUsers)
    // 結果:[{jorn 15} {bob 10} {alice 20}]
}

append()の第2引数に追加したいスライスを記載して、「...」をつける。
これによって、第2引数に渡したスライスが展開されて、一つ一つの要素がotherUsersスライスに追加できる

append()の第2引数について

append()の第2引数が可変長引数を受け取ることができる。

可変長引数とは、関数が異なる数の引数を受け入れることができる特殊な引数のこと。

スライスと配列における「...演算子」とは

「...演算子」は スライスと配列を展開して、その要素を個別の引数として関数に渡す ために使用される。
これにより、可変長引数関数へのスライスの要素を渡すなど、関数呼び出し時に引数リストを柔軟に扱うことができる。

サンプルコード

package main

import "fmt"

func sumIntegers(arg ...int) {
    sum := 0
    for _, arg := range args {
        sum += arg
    }
    fmt.Println("Sum of argument: %d\n", sum)
}

func main() {
    mySlice := []int{1, 2, 3}
    sumIntegers(mySlice...)
}

まとめ

  • append()の第2引数には可変長引数を渡すことができる。
  • 「...演算子」はスライス・配列を展開して、一つ一つの要素を個別の引数として関数に和すことが可能
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?