「Go/関数」の版間の差分
削除された内容 追加された内容
M {{Nav}} タグ: 2017年版ソースエディター |
タグ: 2017年版ソースエディター |
||
1 行
{{Nav}}
func 関数名([仮引数名 仮引数型{, 仮引数名 仮引数型}]) [戻値の型{, 戻値の型}] {
▲;書式:<syntaxhighlight lang="go">
▲ その関数の処理内容
▲ return 戻り値
}
</syntaxhighlight>
です。
;[https://paiza.io/projects/55F0TajRrjOx7rEwOQ3W1g?language=go コード例]:<syntaxhighlight lang="go">
package main
19 ⟶ 16行目:
func sch() {
}
func main() {
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
いまmainにいる
いま
</syntaxhighlight>
関数の仮引数は、関数
関数の中で宣言された変数は、関数が終了するまでがスコープのローカル変数です。
if文、switch文、switch文、for文などの構造構文の第一項が簡単な宣言であった場合、そこで宣言された変数のスコープは構造構文が終わるまでです。
;[https://paiza.io/projects/XMxkCDHp2z1NZHoQf6EVuQ?language=go コード例]:<syntaxhighlight lang="go">
42 ⟶ 40行目:
var a = "ABC"
func function1() {
}
func function2() {
}
func main() {
sum := 0
for i := 0; i <= 10; i++ {
sum += i
}
fmt.Println("sum =", sum)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
a = 1
a@function1 =
a@function2 =
a' =
sum = 55
</syntaxhighlight>
: main と function1 では、グローバル変数 a は同名のローカル変数 a にシャドーイングされます。
: function2 では、(シャドーイングされないので)グローバル変数 a が表示されています。
== 可変長仮引数 ==
Goの関数では可変長仮引数がサポ-トされています。
;[https://paiza.io/projects/Uth1bYAZKeOdZm0wV_CiNg?language=go コード例]:<syntaxhighlight lang="go" highlight="5,14,15"line>
package main
import "fmt"
func sum(s ...int) int {
n := 0
for _, v := range s {
n += v
}
return n
}
func main() {
fmt.Println(sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
v := []int{1, 2, 4, 8, 16, 32, 64, 128, 256}
fmt.Println(sum(v...))
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
55
511
</syntaxhighlight>
|