Go(...)の3つのポイントを徹底分析 使用方法
...」は、実はgoの構文解析の砂糖の一種です。
最初の用途は、主に関数が複数の不定引数を持ち、複数の不定引数を受け入れることができる場合である。
2つ目の用途は、スライスを分割して渡すことができることです。
例
package main
import (
"fmt"
)
func main(){
name(1,2,3,4,5,6,7,8,9) // multiple indeterminate number of arguments
var strss= []string{
"qwr",
"234",
"yui",
"cvbc",
}
test1(strss...) //Slices are broken up and passed into strss... Equivalent to "qwr","234","yui","cvbc"
}
func name(args . .int) {//can accept any int argument
for _, v:= range args{
fmt.Println(v)
}
}
func test1(args ... .string) { //can accept any string argument
for _, v:= range args{
fmt.Println(v)
}
}
ここで、囲碁の使い方で3つの点(...)を見てみると、以下のようになります。
ご存知のように、Goは厳密に型付けされた言語であり、不定形の入力引数で開発するとどうなるでしょうか。
ここで、私たちプログラマに柔軟性を与えてくれる、以下の3つのポイント(...)を紹介します。
Golangでは、3つのドットは4つの場所で使われています(3つのドットは正式には何と言うのでしょうか?)
コードは以下の通りです。
package main
import (
"fmt"
"log"
)
func main() {
//multiParam can accept a variable number of parameters
names := []string{"jerry", "herry"}
// In the array literal, ... The length specified by the symbol is equal to the number of elements in the literal.
stooges := [...] string{"Moe", "Larry", "Curly"}
stoogxs := []string{"Moe", "Larry", "Curly"}
strParam("jerry", "herry")
strParam(names...)
//merge two slice by append
stoogxs = append(stoogxs, names...)
fmt.Println(stoogxs)
//identify the number of elements of the array, here, ... means the number of elements of the array
log.Println(len(stooges))
nums := []int{4, 5, 6}
stoogns := [...] int{4, 5, 6}
intParam(1, 2, 3)
intParam(nums...)
// identifies the number of elements of the array, here, ... means the number of elements of the array
log.Println(len(stoogns))
}
func strParam(args ... .string) {
// the accepted arguments are placed in the args array
for _, e := range args {
log.Println(e)
}
}
func intParam(args . .int) {
res := 0
for _, n := range args {
res += n
}
log.Println(res)
}
可変長の関数パラメータ
関数の最後の引数が.NET型である場合 Tであれば、関数を呼び出すときに、引数リストの最後にあるT型の複数の引数を使用することができる。ここで、. Tは関数内部では実際には[]Tです。
func intParam(args . .int) {
res := 0
for _, n := range args {
res += n
}
log.Println(res)
}
可変長の引数リストで関数を呼び出す
上記のSum関数は、可変長の引数を別々に記述して呼び出します。スライスがあれば、スライスを分割して呼び出す必要はなく、スライスの後に...をつけて呼び出すだけです。これだけです。
nums := []int{4, 5, 6}
intParam(nums...)
配列の要素数を指定します.
stooges := [...] string{"Moe", "Larry", "Curly"} // len(stooges) == 3
ここで、...は配列の要素数を意味します。
Go コマンドラインでのワイルドカード
パッケージファイルを記述するためのワイルドカード。
この例では、現在のディレクトリとすべてのサブディレクトリにあるすべてのパッケージがユニットテストされます:。
go test . /...
囲碁の3つの点(...)の使い方の記事は以上です。囲碁の3点(...)についての詳しい情報は、スクリプトハウスの過去の記事を検索していただくか、引き続き以下の関連記事をご覧ください。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン